diff options
| author | triethyl <triethylammonium@pm.me> | 2025-11-05 20:38:53 -0500 |
|---|---|---|
| committer | triethyl <triethylammonium@pm.me> | 2025-11-05 20:38:53 -0500 |
| commit | 0a7aa13d9e8a0e526353c6538d8cf2d365ade86b (patch) | |
| tree | a320387bd5bd408f863ffc476e5ab18b90b175a0 | |
| parent | 56b150edeacbe30f1e19e5a7df03499c5dced06d (diff) | |
neovim: lots of new mini plugins and configs
| -rw-r--r-- | pkgs/custom-neovim/config/lua/keymaps.lua | 63 | ||||
| -rw-r--r-- | pkgs/custom-neovim/config/lua/plugins/auto-session.lua | 13 | ||||
| -rw-r--r-- | pkgs/custom-neovim/config/lua/plugins/fzf.lua | 51 | ||||
| -rw-r--r-- | pkgs/custom-neovim/config/lua/plugins/luasnip.lua | 10 | ||||
| -rw-r--r-- | pkgs/custom-neovim/config/lua/plugins/mini-ai.lua | 8 | ||||
| -rw-r--r-- | pkgs/custom-neovim/config/lua/plugins/mini-bracketed.lua | 8 | ||||
| -rw-r--r-- | pkgs/custom-neovim/config/lua/plugins/mini-clue.lua | 18 | ||||
| -rw-r--r-- | pkgs/custom-neovim/config/lua/plugins/mini-completion.lua | 39 | ||||
| -rw-r--r-- | pkgs/custom-neovim/config/lua/plugins/mini-files.lua | 1 | ||||
| -rw-r--r-- | pkgs/custom-neovim/config/lua/plugins/mini-indentscope.lua | 11 | ||||
| -rw-r--r-- | pkgs/custom-neovim/config/lua/plugins/mini-jump.lua | 8 | ||||
| -rw-r--r-- | pkgs/custom-neovim/config/lua/plugins/mini-pairs.lua | 1 | ||||
| -rw-r--r-- | pkgs/custom-neovim/config/lua/plugins/mini-splitjoin.lua | 8 | ||||
| -rw-r--r-- | pkgs/custom-neovim/config/lua/plugins/mini-surround.lua | 8 | ||||
| -rw-r--r-- | pkgs/custom-neovim/default.nix | 14 | ||||
| -rw-r--r-- | pkgs/custom-neovim/todo.md | 10 |
16 files changed, 199 insertions, 72 deletions
diff --git a/pkgs/custom-neovim/config/lua/keymaps.lua b/pkgs/custom-neovim/config/lua/keymaps.lua index 86632ee..9c1d260 100644 --- a/pkgs/custom-neovim/config/lua/keymaps.lua +++ b/pkgs/custom-neovim/config/lua/keymaps.lua @@ -17,40 +17,8 @@ mapkey("n", "<leader>o", "Open old file picker", ":FzfLua oldfiles<cr>", "fzf-lu mapkey("n", "<leader>/", "Open live grep picker", ":FzfLua live_grep<cr>", "fzf-lua") mapkey("n", "<leader>k", "Open colorscheme picker", ":FzfLua colorschemes<cr>", "fzf-lua") mapkey("n", "<leader>z", "Open zoxide picker", ":FzfLua zoxide<cr>", "fzf-lua") -mapkey("n", "<leader>l", "Open tab directory picker", function () - local dirstr = vim.fn.system("fd -t d") - - local pos,dirtbl = 0,{} - for st,sp in function() return string.find(dirstr, "\n", pos, true) end do - table.insert(dirtbl, string.sub(dirstr, pos, st - 1)) - pos = sp + 1 - end - table.insert(dirtbl, string.sub(dirstr, pos)) - vim.ui.select( - dirtbl, - {}, - function (choice) - vim.cmd.tcd(choice) - end - ) -end, "fzf-lua") -mapkey("n", "<leader>L", "Open directory picker", function () - local dirstr = vim.fn.system("fd -t d") - - local pos,dirtbl = 0,{} - for st,sp in function() return string.find(dirstr, "\n", pos, true) end do - table.insert(dirtbl, string.sub(dirstr, pos, st - 1)) - pos = sp + 1 - end - table.insert(dirtbl, string.sub(dirstr, pos)) - vim.ui.select( - dirtbl, - {}, - function (choice) - vim.cmd.cd(choice) - end - ) -end, "fzf-lua") +mapkey("n", "<leader>L", "Open cd picker", ":lua Custom_pickers.fzf_dir_cd()<cr>", "fzf-lua") +mapkey("n", "<leader>l", "Open tab cd picker", ":lua Custom_pickers.fzf_dir_tcd()<cr>", "fzf-lua") -- File manager mapkey("n", "<leader>e", "Open file manager", ":lua MiniFiles.open()<cr>", "mini.files") @@ -61,7 +29,7 @@ mapkey("n", "<leader>ga", "Git add", ":Git add %:p<cr>", "mini-git") mapkey("n", "<leader>gA", "Git add cwd", function() vim.cmd("Git add " .. vim.fn.getcwd() .. "/.") end, "mini-git") mapkey("n", "<leader>gr", "Git remove", ":Git rm %:p<cr>", "mini-git") mapkey("n", "<leader>gc", "Git commit", ":Git commit<cr>", "mini-git") -mapkey("n", "<leader>gc", "Browse git commits", ":FzfLua git_commits<cr>", "fzf-lua") +mapkey("n", "<leader>gC", "Browse git commits", ":FzfLua git_commits<cr>", "fzf-lua") mapkey("n", "<leader>gb", "Browse git branches", ":FzfLua git_branches<cr>", "fzf-lua") mapkey("n", "<leader>gB", "Browse git blame", ":FzfLua git_blame<cr>", "fzf-lua") mapkey("n", "<leader>gg", "Git status", ":FzfLua git_status<cr>", "fzf-lua") @@ -94,25 +62,14 @@ mapkey("n", "<leader>j", "Manage comment graphics", "") mapkey("n", "<leader>jb", "Create comment box", ":CB") -- Session --- mapkey("n", "<leader>w", "Manage sessions", "") --- mapkey("n", "<leader>ww", "Open a session", ":AutoSession search<cr>", "mini.pick") --- mapkey("n", "<leader>wd", "Delete a session", ":AutoSession deletePicker<cr>", "mini.pick") --- mapkey("n", "<leader>wD", "Delete current session", ":AutoSession delete<cr>", "mini.pick") --- mapkey("n", "<leader>wr", "Restore last session", ":AutoSession restore<cr>") --- mapkey("n", "<leader>wp", "Purge orphaned sessions", ":AutoSession purgeOrphaned<cr>") --- mapkey("n", "<leader>ws", "Save session", ":AutoSession save<cr>") - -mapkey("n", "<leader>w", "Manage sessions", "", "mini.sessions") -mapkey("n", "<leader>ww", "Open a session", ":lua MiniSessions.select('read')<cr>", "fzf-lua") -mapkey("n", "<leader>wd", "Delete a session", ":lua MiniSessions.select('delete')<cr>", "fzf-lua") -mapkey("n", "<leader>ws", "Save current session", ":lua MiniSessions.write()<cr>") -mapkey("n", "<leader>wS", "Save as new session", function() - local session_name = vim.fn.input("Session name: ") - vim.cmd.lua("MiniSessions.write("..session_name..")") -end) -mapkey("n", "<leader>wn", "Create new session", function() +mapkey("n", "<leader>w", "Manage sessions", "") +mapkey("n", "<leader>ww", "Manage Sessions", ":AutoSession search<cr>", "fzf-lua") +mapkey("n", "<leader>ws", "Save current session", ":AutoSession save<cr>") +mapkey("n", "<leader>wr", "Open last session", ":AutoSession restore<cr>") +mapkey("n", "<leader>wp", "Purge orphaned sessions", ":AutoSession purgeOrphaned<cr>") +mapkey("n", "<leader>wl", "Leave current session", function() vim.cmd.wa() - vim.cmd.lua("MiniSessions.write()") + vim.cmd("AutoSession save") vim.cmd.new() vim.cmd([[.+,$bwipeout]]) vim.cmd.cd("~") diff --git a/pkgs/custom-neovim/config/lua/plugins/auto-session.lua b/pkgs/custom-neovim/config/lua/plugins/auto-session.lua new file mode 100644 index 0000000..deedd9a --- /dev/null +++ b/pkgs/custom-neovim/config/lua/plugins/auto-session.lua @@ -0,0 +1,13 @@ +return { + "auto-session", + lazy = false, + after = function() + require("auto-session").setup { + auto_create = false, + legacy_cmds = false, + suppressed_dirs = { + "~/", + }, + } + end +} diff --git a/pkgs/custom-neovim/config/lua/plugins/fzf.lua b/pkgs/custom-neovim/config/lua/plugins/fzf.lua index 8af7284..1c1b9aa 100644 --- a/pkgs/custom-neovim/config/lua/plugins/fzf.lua +++ b/pkgs/custom-neovim/config/lua/plugins/fzf.lua @@ -2,8 +2,57 @@ return { "fzf-lua", cmd = "FzfLua", after = function () - require("fzf-lua").setup {} + require("fzf-lua").setup { + "default-title", + files = { + cwd_prompt = false, + }, + } require("fzf-lua").register_ui_select() + + Custom_pickers = {} + + Custom_pickers.fzf_dir_cd = function() + local dirs = {} + for name, type in vim.fs.dir("./", {depth = 100}) do + if type == "directory" then + table.insert(dirs, name) + end + end + + require("fzf-lua").fzf_exec( dirs, { + winopts = { + title = " Directories ", + }, + prompt = "❯ ", + actions = { + ["enter"] = function(selected) + vim.cmd.cd(selected) + end + } + }) + end + + Custom_pickers.fzf_dir_tcd = function() + local dirs = {} + for name, type in vim.fs.dir("./", {depth = 100}) do + if type == "directory" then + table.insert(dirs, name) + end + end + + require("fzf-lua").fzf_exec( dirs, { + winopts = { + title = " Directories ", + }, + prompt = "❯ ", + actions = { + ["enter"] = function(selected) + vim.cmd.tcd(selected) + end + } + }) + end end, } diff --git a/pkgs/custom-neovim/config/lua/plugins/luasnip.lua b/pkgs/custom-neovim/config/lua/plugins/luasnip.lua new file mode 100644 index 0000000..a981de1 --- /dev/null +++ b/pkgs/custom-neovim/config/lua/plugins/luasnip.lua @@ -0,0 +1,10 @@ +return { + "luasnip", + lazy = true, + before = function () + vim.cmd.packadd("friendly-snippets") + end, + after = function () + require("luasnip.loaders.from_vscode").lazy_load() + end, +} diff --git a/pkgs/custom-neovim/config/lua/plugins/mini-ai.lua b/pkgs/custom-neovim/config/lua/plugins/mini-ai.lua new file mode 100644 index 0000000..ad54e1a --- /dev/null +++ b/pkgs/custom-neovim/config/lua/plugins/mini-ai.lua @@ -0,0 +1,8 @@ +return { + "mini.ai", + -- enabled = false, + lazy = false, + after = function () + require("mini.ai").setup() + end +} diff --git a/pkgs/custom-neovim/config/lua/plugins/mini-bracketed.lua b/pkgs/custom-neovim/config/lua/plugins/mini-bracketed.lua new file mode 100644 index 0000000..4ee3d3f --- /dev/null +++ b/pkgs/custom-neovim/config/lua/plugins/mini-bracketed.lua @@ -0,0 +1,8 @@ +return { + "mini.bracketed", + -- enabled = false, + lazy = false, + after = function () + require("mini.bracketed").setup() + end +} diff --git a/pkgs/custom-neovim/config/lua/plugins/mini-clue.lua b/pkgs/custom-neovim/config/lua/plugins/mini-clue.lua index 25c0866..21217e5 100644 --- a/pkgs/custom-neovim/config/lua/plugins/mini-clue.lua +++ b/pkgs/custom-neovim/config/lua/plugins/mini-clue.lua @@ -35,6 +35,20 @@ return { -- `z` key { mode = 'n', keys = 'z' }, { mode = 'x', keys = 'z' }, + + -- mini.surround + { mode = 'n', keys = 's' }, + { mode = 'v', keys = 's' }, + + -- mini.bracketed + { mode = 'n', keys = '[' }, + { mode = 'v', keys = '[' }, + { mode = 'n', keys = ']' }, + { mode = 'v', keys = ']' }, + + -- mini.ai + { mode = 'v', keys = 'a' }, + { mode = 'v', keys = 'i' }, }, clues = { @@ -45,6 +59,10 @@ return { miniclue.gen_clues.registers(), miniclue.gen_clues.windows(), miniclue.gen_clues.z(), + + { mode = {'n', 'v'}, keys = 's' }, + miniclue.gen_clues.square_brackets(), + { mode = 'v', keys = {'a', 'i'}}, }, window = { diff --git a/pkgs/custom-neovim/config/lua/plugins/mini-completion.lua b/pkgs/custom-neovim/config/lua/plugins/mini-completion.lua new file mode 100644 index 0000000..7cc0fa6 --- /dev/null +++ b/pkgs/custom-neovim/config/lua/plugins/mini-completion.lua @@ -0,0 +1,39 @@ +return { + "mini.completion", + enabled = true, + lazy = true, + event = "InsertEnter", + after = function() + require("mini.completion").setup { + window = { + info = { + border = "rounded", + }, + signature = { + border = "rounded", + }, + }, + } + local imap_expr = function(lhs, rhs) + vim.keymap.set('i', lhs, rhs, { expr = true }) + end + imap_expr('<Tab>', [[pumvisible() ? "\<C-n>" : "\<Tab>"]]) + imap_expr('<S-Tab>', [[pumvisible() ? "\<C-p>" : "\<S-Tab>"]]) + + -- Disable arrow keys from navigating completion window. + -- I like to navigate inside insert mode and the window prevents that. + + vim.keymap.set('i', '<Up>', function() + -- cancel completion popup + vim.fn.complete(vim.fn.col('.'), {}) + + vim.api.nvim_feedkeys(vim.api.nvim_replace_termcodes('<Up>', true, false, true), 'n', true) + end, { noremap = true, desc = 'Cancel completion and move cursor up' }) + + vim.keymap.set('i', '<Down>', function() + vim.fn.complete(vim.fn.col('.'), {}) + + vim.api.nvim_feedkeys(vim.api.nvim_replace_termcodes('<Down>', true, false, true), 'n', true) + end, { noremap = true, desc = 'Cancel completion and move cursor down' }) + end +} diff --git a/pkgs/custom-neovim/config/lua/plugins/mini-files.lua b/pkgs/custom-neovim/config/lua/plugins/mini-files.lua index 0dc977a..9249a6c 100644 --- a/pkgs/custom-neovim/config/lua/plugins/mini-files.lua +++ b/pkgs/custom-neovim/config/lua/plugins/mini-files.lua @@ -1,6 +1,5 @@ return { "mini.files", - -- enabled = false, lazy = true, after = function() require("mini.files").setup { diff --git a/pkgs/custom-neovim/config/lua/plugins/mini-indentscope.lua b/pkgs/custom-neovim/config/lua/plugins/mini-indentscope.lua new file mode 100644 index 0000000..82397c1 --- /dev/null +++ b/pkgs/custom-neovim/config/lua/plugins/mini-indentscope.lua @@ -0,0 +1,11 @@ +return { + "mini.indentscope", + lazy = false, + after = function() + require("mini.indentscope").setup { + options = { + try_as_border = true, + }, + } + end +} diff --git a/pkgs/custom-neovim/config/lua/plugins/mini-jump.lua b/pkgs/custom-neovim/config/lua/plugins/mini-jump.lua new file mode 100644 index 0000000..b796e15 --- /dev/null +++ b/pkgs/custom-neovim/config/lua/plugins/mini-jump.lua @@ -0,0 +1,8 @@ +return { + "mini.jump", + -- enabled = false, + lazy = false, + after = function () + require("mini.jump").setup() + end +} diff --git a/pkgs/custom-neovim/config/lua/plugins/mini-pairs.lua b/pkgs/custom-neovim/config/lua/plugins/mini-pairs.lua index 38b36a0..e799c50 100644 --- a/pkgs/custom-neovim/config/lua/plugins/mini-pairs.lua +++ b/pkgs/custom-neovim/config/lua/plugins/mini-pairs.lua @@ -1,6 +1,5 @@ return { "mini.pairs", - -- enabled = false, lazy = true, event = "InsertEnter", after = function() diff --git a/pkgs/custom-neovim/config/lua/plugins/mini-splitjoin.lua b/pkgs/custom-neovim/config/lua/plugins/mini-splitjoin.lua new file mode 100644 index 0000000..7118a0a --- /dev/null +++ b/pkgs/custom-neovim/config/lua/plugins/mini-splitjoin.lua @@ -0,0 +1,8 @@ +return { + "mini.splitjoin", + -- enabled = false, + lazy = false, + after = function () + require("mini.splitjoin").setup() + end +} diff --git a/pkgs/custom-neovim/config/lua/plugins/mini-surround.lua b/pkgs/custom-neovim/config/lua/plugins/mini-surround.lua new file mode 100644 index 0000000..61ec7e8 --- /dev/null +++ b/pkgs/custom-neovim/config/lua/plugins/mini-surround.lua @@ -0,0 +1,8 @@ +return { + "mini.surround", + -- enabled = false, + lazy = false, + after = function () + require("mini.surround").setup() + end +} diff --git a/pkgs/custom-neovim/default.nix b/pkgs/custom-neovim/default.nix index 3938292..33fdd4a 100644 --- a/pkgs/custom-neovim/default.nix +++ b/pkgs/custom-neovim/default.nix @@ -32,23 +32,25 @@ in fzf-lua mini-clue mini-files - mini-extra mini-icons mini-base16 - mini-starter - plenary-nvim # UI library - actions-preview-nvim # Preview lsp actions + mini-indentscope + mini-completion # Completion Plugins - blink-cmp luasnip friendly-snippets # Utility Plugins mini-pairs + mini-bracketed + mini-jump + mini-ai + mini-splitjoin + mini-surround vim-nix # Indentation for nix files comment-box-nvim - mini-sessions + auto-session # Git Plugins mini-git diff --git a/pkgs/custom-neovim/todo.md b/pkgs/custom-neovim/todo.md index 14cd935..2e60b16 100644 --- a/pkgs/custom-neovim/todo.md +++ b/pkgs/custom-neovim/todo.md @@ -1,12 +1,2 @@ # Todo -- add image.nvim -- add scope indicator -- make session picker -- integrate lazygit - -## Eventually if Possible - -- Make blink.cmp not work in comments. -- Make statusline progress component work in neovide. -- Make custom carbon colorscheme. |
