diff --git a/dotfyle.json b/dotfyle.json index da953c2..e0519de 100644 --- a/dotfyle.json +++ b/dotfyle.json @@ -1,137 +1 @@ -{ - "distribution": "custom", - "masonTools": [ - "bash-language-server", - "gopls", - "hadolint", - "jdtls", - "lua-language-server", - "pyright", - "pyright-langserver", - "rubocop", - "ruff", - "rust-analyzer", - "shellcheck", - "solargraph", - "typescript-language-server", - "typos-lsp", - "vim-language-server", - "vscode-eslint-language-server", - "vscode-json-language-server" - ], - "plugins": [ - "2kabhishek/markit.nvim", - "2kabhishek/nerdy.nvim", - "2kabhishek/termim.nvim", - "CopilotC-Nvim/CopilotChat.nvim", - "Exafunction/codeium.vim", - "LudoPinelli/comment-box.nvim", - "MunifTanjim/nui.nvim", - "RRethy/nvim-treesitter-endwise", - "RRethy/nvim-treesitter-textsubjects", - "ThePrimeagen/refactoring.nvim", - "ThePrimeagen/vim-be-good", - "abecodes/tabout.nvim", - "akinsho/toggleterm.nvim", - "chrisgrieser/nvim-spider", - "creativenull/dotfyle-metadata.nvim", - "cvigilv/esqueleto.nvim", - "debugloop/telescope-undo.nvim", - "echasnovski/mini.ai", - "echasnovski/mini.surround", - "epwalsh/pomo.nvim", - "folke/flash.nvim", - "folke/lazy.nvim", - "folke/lazydev.nvim", - "folke/snacks.nvim", - "folke/which-key.nvim", - "giuxtaposition/blink-cmp-copilot", - "iamcco/markdown-preview.nvim", - "jay-babu/mason-null-ls.nvim", - "lewis6991/gitsigns.nvim", - "m4xshen/hardtime.nvim", - "mfussenegger/nvim-dap", - "michaelb/sniprun", - "mistricky/codesnap.nvim", - "navarasu/onedark.nvim", - "neovim/nvim-lspconfig", - "numToStr/Navigator.nvim", - "nvchad/showkeys", - "nvim-lua/plenary.nvim", - "nvim-lualine/lualine.nvim", - "nvim-neo-tree/neo-tree.nvim", - "nvim-neotest/neotest", - "nvim-neotest/neotest-jest", - "nvim-neotest/neotest-python", - "nvim-neotest/nvim-nio", - "nvim-telescope/telescope-file-browser.nvim", - "nvim-telescope/telescope-fzf-native.nvim", - "nvim-telescope/telescope.nvim", - "nvim-treesitter/nvim-treesitter", - "nvim-treesitter/nvim-treesitter-refactor", - "nvim-treesitter/nvim-treesitter-textobjects", - "nvimdev/lspsaga.nvim", - "nvimtools/none-ls.nvim", - "olimorris/neotest-rspec", - "rafamadriz/friendly-snippets", - "rcarriga/nvim-dap-ui", - "rcarriga/nvim-notify", - "ruifm/gitlinker.nvim", - "saghen/blink.cmp", - "stevearc/dressing.nvim", - "tpope/vim-fugitive", - "tpope/vim-rails", - "uga-rosa/ccc.nvim", - "wakatime/vim-wakatime", - "weizheheng/ror.nvim", - "williamboman/mason-lspconfig.nvim", - "williamboman/mason.nvim", - "windwp/nvim-autopairs", - "windwp/nvim-spectre", - "windwp/nvim-ts-autotag", - "zapling/mason-lock.nvim", - "zbirenbaum/copilot.lua" - ], - "pluginManager": "lazy.nvim", - "treesitterParsers": [ - "bash", - "c", - "css", - "dart", - "elixir", - "gitcommit", - "go", - "html", - "java", - "javascript", - "json", - "lua", - "markdown", - "markdown_inline", - "python", - "ruby", - "rust", - "scss", - "typescript", - "vim", - "vimdoc", - "yaml" - ], - "lspServers": [ - "bashls", - "eslint", - "gopls", - "jdtls", - "jsonls", - "lua_ls", - "pyright", - "rubocop", - "ruff", - "rust_analyzer", - "solargraph", - "ts_ls", - "typos_lsp", - "vimls" - ], - "leaderKey": "" -} +{"distribution": "custom", "masonTools": ["actionlint", "bash-language-server", "beautysh", "black", "clangd", "codespell", "cspell", "debugpy", "debugpy-adapter", "djlint", "docker-langserver", "eslint_d", "gofumpt", "goimports", "golangci-lint", "gopls", "hadolint", "iferr", "isort", "jdtls", "lua-language-server", "markdownlint", "marksman", "phpcs", "prettier", "prettierd", "proselint", "pylint", "pyright", "pyright-langserver", "rubocop", "ruff", "rust-analyzer", "selene", "shellcheck", "shfmt", "solargraph", "stylua", "tailwindcss-language-server", "taplo", "terraform-ls", "tinymist", "trivy", "typescript-language-server", "typos-lsp", "vim-language-server", "vint", "vscode-css-language-server", "vscode-eslint-language-server", "vscode-html-language-server", "vscode-json-language-server", "write-good", "yaml-language-server"], "plugins": ["2kabhishek/markit.nvim", "2kabhishek/nerdy.nvim", "2kabhishek/termim.nvim", "Exafunction/codeium.vim", "LudoPinelli/comment-box.nvim", "RRethy/nvim-treesitter-textsubjects", "ThePrimeagen/refactoring.nvim", "akinsho/toggleterm.nvim", "chrisgrieser/nvim-spider", "creativenull/dotfyle-metadata.nvim", "cvigilv/esqueleto.nvim", "debugloop/telescope-undo.nvim", "echasnovski/mini.ai", "echasnovski/mini.bracketed", "echasnovski/mini.files", "echasnovski/mini.pairs", "echasnovski/mini.surround", "folke/flash.nvim", "folke/lazy.nvim", "folke/lazydev.nvim", "folke/snacks.nvim", "folke/which-key.nvim", "iamcco/markdown-preview.nvim", "jay-babu/mason-null-ls.nvim", "lewis6991/gitsigns.nvim", "michaelb/sniprun", "mistricky/codesnap.nvim", "navarasu/onedark.nvim", "neovim/nvim-lspconfig", "numToStr/Navigator.nvim", "nvim-lua/plenary.nvim", "nvim-lualine/lualine.nvim", "nvim-telescope/telescope-fzf-native.nvim", "nvim-telescope/telescope.nvim", "nvim-tree/nvim-web-devicons", "nvim-treesitter/nvim-treesitter", "nvim-treesitter/nvim-treesitter-refactor", "nvim-treesitter/nvim-treesitter-textobjects", "nvimdev/lspsaga.nvim", "nvimtools/none-ls.nvim", "rafamadriz/friendly-snippets", "ruifm/gitlinker.nvim", "saghen/blink.cmp", "stevearc/dressing.nvim", "tpope/vim-fugitive", "uga-rosa/ccc.nvim", "wakatime/vim-wakatime", "williamboman/mason-lspconfig.nvim", "williamboman/mason.nvim", "windwp/nvim-spectre", "zapling/mason-lock.nvim"], "pluginManager": "lazy.nvim", "treesitterParsers": ["bash", "c", "css", "dart", "elixir", "gitcommit", "go", "html", "java", "javascript", "json", "lua", "markdown", "markdown_inline", "python", "ruby", "rust", "scss", "typescript", "vim", "vimdoc", "yaml"], "lspServers": ["bashls", "clangd", "cssls", "dockerls", "eslint", "gopls", "html", "jdtls", "jsonls", "lua_ls", "marksman", "pyright", "rubocop", "ruff", "rust_analyzer", "solargraph", "tailwindcss", "taplo", "terraformls", "tinymist", "ts_ls", "typos_lsp", "vimls", "yamlls"], "leaderKey": ""} \ No newline at end of file diff --git a/lua/core/keys.lua b/lua/core/keys.lua index fbc2369..b312698 100644 --- a/lua/core/keys.lua +++ b/lua/core/keys.lua @@ -15,8 +15,8 @@ vim.g.maplocalleader = ' ' -- visual_block_mode = "x", term_mode = "t", command_mode = "c", -- Comment -map({ 'n', 'v' }, '/', 'gcc', { desc = 'Comment toggle', remap = true }) -map({ 'v', 'x' }, '/', 'gc', { desc = 'Comment toggle', remap = true }) +-- map({ 'n', 'v' }, ';', 'gcc', { desc = 'Comment toggle', remap = true }) +-- map({ 'v', 'x' }, ';', 'gc', { desc = 'Comment toggle', remap = true }) -- Able to use semicolon in normal mode map('n', ';', ':', { desc = '; Command mode' }) @@ -61,8 +61,8 @@ map('n', 'j', "v:count == 0 ? 'gj' : 'j'", { expr = true, silent = true }) map('n', 'k', "v:count == 0 ? 'gk' : 'k'", { expr = true, silent = true }) -- Move text up and down -map({ 'v', 'x' }, 'J', ":move '>+1gv-gv", opts) -map({ 'v', 'x' }, 'K', ":move '<-2gv-gv", opts) +map({ 'v', 'x' }, 'J', ":move '>+1gv-gv", opts) +map({ 'v', 'x' }, 'K', ":move '<-2gv-gv", opts) -- Clear search, diff update and redraw map({ 'i', 'n' }, '', 'noh', { desc = 'Escape and clear hlsearch' }) diff --git a/lua/plugins/lang/lspconfig.lua b/lua/plugins/lang/lspconfig.lua index 8c99db1..cd865af 100644 --- a/lua/plugins/lang/lspconfig.lua +++ b/lua/plugins/lang/lspconfig.lua @@ -9,8 +9,7 @@ end local default_setup = function(server) lspconfig[server].setup({ - capabilities = - require('blink.cmp').get_lsp_capabilities() + capabilities = require('blink.cmp').get_lsp_capabilities(), }) end @@ -26,7 +25,6 @@ require('mason-lspconfig').setup({ default_setup, lua_ls = function() lspconfig.lua_ls.setup({ - capabilities = lsp_capabilities, settings = { Lua = { runtime = { version = 'LuaJIT' }, diff --git a/lua/plugins/lang/spider.lua b/lua/plugins/lang/spider.lua index 5903072..108eb09 100644 --- a/lua/plugins/lang/spider.lua +++ b/lua/plugins/lang/spider.lua @@ -4,7 +4,7 @@ spider.setup({ skipInsignificantPunctuation = true, }) -vim.keymap.set({ 'n', 'o', 'x' }, 'w', "lua require('spider').motion('w')", { desc = 'Spider-w' }) -vim.keymap.set({ 'n', 'o', 'x' }, 'e', "lua require('spider').motion('e')", { desc = 'Spider-e' }) -vim.keymap.set({ 'n', 'o', 'x' }, 'b', "lua require('spider').motion('b')", { desc = 'Spider-b' }) -vim.keymap.set({ 'n', 'o', 'x' }, 'ge', "lua require('spider').motion('ge')", { desc = 'Spider-ge' }) +vim.keymap.set({ 'n', 'o', 'x' }, 'w', ":lua require('spider').motion('w')", { desc = 'Spider-w' }) +vim.keymap.set({ 'n', 'o', 'x' }, 'e', ":lua require('spider').motion('e')", { desc = 'Spider-e' }) +vim.keymap.set({ 'n', 'o', 'x' }, 'b', ":lua require('spider').motion('b')", { desc = 'Spider-b' }) +vim.keymap.set({ 'n', 'o', 'x' }, 'ge', ":lua require('spider').motion('ge')", { desc = 'Spider-ge' }) diff --git a/lua/plugins/lock.json b/lua/plugins/lock.json index e1fc3f0..dee5290 100644 --- a/lua/plugins/lock.json +++ b/lua/plugins/lock.json @@ -1,6 +1,6 @@ { "Navigator.nvim": { "branch": "master", "commit": "91d86506ac2a039504d5205d32a1d4bc7aa57072" }, - "blink.cmp": { "branch": "main", "commit": "18b352d12b35bca148427b607098df14b75a218f" }, + "blink.cmp": { "branch": "main", "commit": "dcda20d3aa345025699a920c45b0a0603551f41d" }, "ccc.nvim": { "branch": "main", "commit": "b57cbaf8db3ac43c56c9e2c7f3812944638260ed" }, "codeium.vim": { "branch": "main", "commit": "000de972de76f357c03da14f4f8dd9a969d4fe8c" }, "codesnap.nvim": { "branch": "main", "commit": "6400480aa6cc366cbd931146c429aaa64680dab9" }, @@ -11,46 +11,46 @@ "flash.nvim": { "branch": "main", "commit": "3c942666f115e2811e959eabbdd361a025db8b63" }, "friendly-snippets": { "branch": "main", "commit": "efff286dd74c22f731cdec26a70b46e5b203c619" }, "gitlinker.nvim": { "branch": "master", "commit": "cc59f732f3d043b626c8702cb725c82e54d35c25" }, - "gitsigns.nvim": { "branch": "main", "commit": "c3070fcc2e7da1798041219fde8d88f2e4bf7eb5" }, + "gitsigns.nvim": { "branch": "main", "commit": "011dc6718bcebdf92a5336bb0da79189c3afe621" }, "hardtime.nvim": { "branch": "main", "commit": "5d9adcbe2f12741de79e435c8b85dca69a3b22e4" }, - "lazy.nvim": { "branch": "main", "commit": "e5e9bf48211a13d9ee6c1077c88327c49c1ab4a0" }, + "lazy.nvim": { "branch": "main", "commit": "6c3bda4aca61a13a9c63f1c1d1b16b9d3be90d7a" }, "lazydev.nvim": { "branch": "main", "commit": "2367a6c0a01eb9edb0464731cc0fb61ed9ab9d2c" }, - "lspsaga.nvim": { "branch": "main", "commit": "da8a66c53241876bba140980469876db3a183604" }, - "lualine.nvim": { "branch": "master", "commit": "f4f791f67e70d378a754d02da068231d2352e5bc" }, + "lspsaga.nvim": { "branch": "main", "commit": "6063935cf68de9aa6dd79f8e1caf5df0a9385de3" }, + "lualine.nvim": { "branch": "master", "commit": "070cd91da2770df7d27d5c49241a8f4697350c6e" }, "markdown-preview.nvim": { "branch": "master", "commit": "a923f5fc5ba36a3b17e289dc35dc17f66d0548ee" }, - "markit.nvim": { "branch": "main", "commit": "4b6428efa721d420aa1377a30b7608255aa56d3f" }, + "markit.nvim": { "branch": "main", "commit": "9b031afab214aa6e6467f275f55640989f438925" }, "mason-lock.nvim": { "branch": "main", "commit": "86614f76c3442fba1c5c8d79aa1efcb3ad69de1c" }, "mason-lspconfig.nvim": { "branch": "main", "commit": "1a31f824b9cd5bc6f342fc29e9a53b60d74af245" }, "mason-null-ls.nvim": { "branch": "main", "commit": "de19726de7260c68d94691afb057fa73d3cc53e7" }, "mason.nvim": { "branch": "main", "commit": "fc98833b6da5de5a9c5b1446ac541577059555be" }, "mini.ai": { "branch": "main", "commit": "ebb04799794a7f94628153991e6334c3304961b8" }, - "mini.bracketed": { "branch": "main", "commit": "95e1023c1734c805ad3b9da364fc3518e0881c70" }, + "mini.bracketed": { "branch": "main", "commit": "0ec65567ffde0ad4d94d794d55f3b627203b496a" }, "mini.files": { "branch": "main", "commit": "01001e0cfc1e79f581d055ae3f70fbac96a2f378" }, "mini.pairs": { "branch": "main", "commit": "1a3e73649c0eaef2f6c48ce1e761c6f0a7c11918" }, "mini.surround": { "branch": "main", "commit": "aa5e245829dd12d8ff0c96ef11da28681d6049aa" }, "neotest": { "branch": "master", "commit": "d66cf4e05a116957f0d3a7755a24291c7d1e1f72" }, - "nerdy.nvim": { "branch": "main", "commit": "a086fa89a0716d5a45c6c1bd3804e238ac87eaab" }, - "none-ls.nvim": { "branch": "main", "commit": "f41624ea1a73f020ddbd33438f74abb95ea17d55" }, + "nerdy.nvim": { "branch": "main", "commit": "14bdcd13265dfc80e6ca6cee0598c5880729e24f" }, + "none-ls.nvim": { "branch": "main", "commit": "a117163db44c256d53c3be8717f3e1a2a28e6299" }, "nvim-dap": { "branch": "master", "commit": "99807078c5089ed30e0547aa4b52c5867933f426" }, - "nvim-lspconfig": { "branch": "master", "commit": "1110787f1b464888c59a044c48c5119d14078044" }, + "nvim-lspconfig": { "branch": "master", "commit": "8a1529e46eef5efc86c34c8d9bdd313abc2ecba0" }, "nvim-spectre": { "branch": "master", "commit": "ddd7383e856a7c939cb4f5143278fe041bbb8cb9" }, - "nvim-spider": { "branch": "main", "commit": "2b38e3e95e143313d78ca098eeecda7aebfce925" }, - "nvim-treesitter": { "branch": "master", "commit": "a15dd9280f369fef4640e64de794f69456ecdf7a" }, + "nvim-spider": { "branch": "main", "commit": "9b9a1cf88a10790de69d3b0562d7d612f23561d5" }, + "nvim-treesitter": { "branch": "master", "commit": "548ed98f8a0af738d095ef1be5961f41061ed743" }, "nvim-treesitter-refactor": { "branch": "master", "commit": "d8b74fa87afc6a1e97b18da23e762efb032dc270" }, - "nvim-treesitter-textobjects": { "branch": "master", "commit": "ad8f0a472148c3e0ae9851e26a722ee4e29b1595" }, - "nvim-treesitter-textsubjects": { "branch": "master", "commit": "9de6c64c41dff29d353ebbedefd033996f29d349" }, - "nvim-web-devicons": { "branch": "master", "commit": "1020869742ecb191f260818234517f4a1515cfe8" }, + "nvim-treesitter-textobjects": { "branch": "master", "commit": "143856b1cee509a190cc8c17ddb0638002171235" }, + "nvim-treesitter-textsubjects": { "branch": "master", "commit": "abcbb0e537c9c24800b03b9ca33bee5806604629" }, + "nvim-web-devicons": { "branch": "master", "commit": "ab4cfee554e501f497bce0856788d43cf2eb93d7" }, "onedark.nvim": { "branch": "master", "commit": "67a74c275d1116d575ab25485d1bfa6b2a9c38a6" }, "plenary.nvim": { "branch": "master", "commit": "857c5ac632080dba10aae49dba902ce3abf91b35" }, - "refactoring.nvim": { "branch": "master", "commit": "74f7aea37b4a5afcab7273f19bff72485c9c5c8a" }, - "snacks.nvim": { "branch": "main", "commit": "956fe69df328d2da924a04061802fb7d2ec5fef6" }, + "refactoring.nvim": { "branch": "master", "commit": "36bd14ddd7ebf0546c15e6088e8bc93f8a98787d" }, + "snacks.nvim": { "branch": "main", "commit": "bc0630e43be5699bb94dadc302c0d21615421d93" }, "sniprun": { "branch": "master", "commit": "151ada2c984aee1feb45c7e3c2abb19f597ecbd0" }, - "telescope-fzf-native.nvim": { "branch": "main", "commit": "2a5ceff981501cff8f46871d5402cd3378a8ab6a" }, + "telescope-fzf-native.nvim": { "branch": "main", "commit": "1f08ed60cafc8f6168b72b80be2b2ea149813e55" }, "telescope-undo.nvim": { "branch": "main", "commit": "928d0c2dc9606e01e2cc547196f48d2eaecf58e5" }, "telescope.nvim": { "branch": "0.1.x", "commit": "a0bbec21143c7bc5f8bb02e0005fa0b982edc026" }, - "termim.nvim": { "branch": "main", "commit": "3e6aca613bb16dda69633f37d2da17c383eeec9f" }, + "termim.nvim": { "branch": "main", "commit": "6bb3f8fb5a3c64ca614d7c4782d4965863c41675" }, "toggleterm.nvim": { "branch": "main", "commit": "50ea089fc548917cc3cc16b46a8211833b9e3c7c" }, "vim-fugitive": { "branch": "master", "commit": "4a745ea72fa93bb15dd077109afbb3d1809383f2" }, "vim-wakatime": { "branch": "master", "commit": "e46d7c4f98ee0f40782008dd60cb2a79c377fb1d" }, - "which-key.nvim": { "branch": "main", "commit": "5bf7a73fe851896d5ac26d313db849bf00f45b78" } + "which-key.nvim": { "branch": "main", "commit": "370ec46f710e058c9c1646273e6b225acf47cbed" } } diff --git a/lua/plugins/tools/gitsigns.lua b/lua/plugins/tools/gitsigns.lua index ed9c4aa..54b6c91 100644 --- a/lua/plugins/tools/gitsigns.lua +++ b/lua/plugins/tools/gitsigns.lua @@ -58,6 +58,6 @@ gitsigns.setup({ return '' end, { expr = true, desc = 'Prev Change' }) - map({ 'o', 'x' }, 'ih', ':Gitsigns select_hunk') + map({ 'o', 'x' }, 'ih', ':Gitsigns select_hunk') end, }) diff --git a/lua/plugins/tools/spectre.lua b/lua/plugins/tools/spectre.lua index 6808f38..5100d02 100644 --- a/lua/plugins/tools/spectre.lua +++ b/lua/plugins/tools/spectre.lua @@ -10,47 +10,47 @@ spectre.setup({ mapping = { ['toggle_line'] = { map = 't', - cmd = "lua require('spectre').toggle_line()", + cmd = ":lua require('spectre').toggle_line()", desc = 'toggle current item', }, ['enter_file'] = { map = '', - cmd = "lua require('spectre.actions').select_entry()", + cmd = ":lua require('spectre.actions').select_entry()", desc = 'goto current file', }, ['send_to_qf'] = { map = 'Q', - cmd = "lua require('spectre.actions').send_to_qf()", + cmd = ":lua require('spectre.actions').send_to_qf()", desc = 'send all item to quickfix', }, ['replace_cmd'] = { map = 'c', - cmd = "lua require('spectre.actions').replace_cmd()", + cmd = ":lua require('spectre.actions').replace_cmd()", desc = 'input replace vim command', }, ['show_option_menu'] = { map = 'o', - cmd = "lua require('spectre').show_options()", + cmd = ":lua require('spectre').show_options()", desc = 'show option', }, ['run_replace'] = { map = 'R', - cmd = "lua require('spectre.actions').run_replace()", + cmd = ":lua require('spectre.actions').run_replace()", desc = 'replace all', }, ['change_view_mode'] = { map = 'm', - cmd = "lua require('spectre').change_view()", + cmd = ":lua require('spectre').change_view()", desc = 'change result view mode', }, ['toggle_ignore_case'] = { map = 'I', - cmd = "lua require('spectre').change_options('ignore-case')", + cmd = ":lua require('spectre').change_options('ignore-case')", desc = 'toggle ignore case', }, ['toggle_ignore_hidden'] = { map = 'H', - cmd = "lua require('spectre').change_options('hidden')", + cmd = ":lua require('spectre').change_options('hidden')", desc = 'toggle search hidden', }, }, diff --git a/lua/plugins/tools/which-key.lua b/lua/plugins/tools/which-key.lua index a61912a..e039155 100644 --- a/lua/plugins/tools/which-key.lua +++ b/lua/plugins/tools/which-key.lua @@ -1,5 +1,7 @@ local which_key = require('which-key') local icons = require('lib.icons') +local Snacks = require('snacks') +local util = require('lib.util') local setup = { preset = 'helix', @@ -39,34 +41,25 @@ local setup = { local normal_mappings = { mode = 'n', - - { 'b', group = ' Debug' }, - { 'bO', 'DapStepOut', desc = 'Out' }, - { 'bR', 'DapRestartFrame', desc = 'Restart Frame' }, - { 'bb', 'DapToggleBreakpoint', desc = 'Breakpoint' }, - { 'bc', 'DapContinue', desc = 'Continue' }, - { 'bi', 'DapStepInto', desc = 'Into' }, - { 'bl', "lua require'dap'.run_last()", desc = 'Last' }, - { 'bo', 'DapStepOver', desc = 'Over' }, - { 'br', 'DapToggleRepl', desc = 'Repl' }, - { 'bt', 'DapUIToggle', desc = 'Debugger' }, - { 'bx', 'DapTerminate', desc = 'Exit' }, + { '', ':lua Snacks.picker.smart()', desc = 'Smart Find Files' }, + { ',', ':lua Snacks.picker.buffers()', desc = 'Buffers' }, + { '/', ':lua Snacks.picker.search_history()', desc = 'Search History' }, + { ':', ':lua Snacks.picker.command_history()', desc = 'Command History' }, + { 'x', ':x', desc = ' Save and Quit' }, { 'c', group = ' Code' }, - { 'cF', 'retab', desc = 'Fix Tabs' }, - { 'cP', 'CccConvert', desc = 'Convert Color' }, - { 'cR', 'ReloadConfig', desc = 'Reload Configs' }, - { 'cc', 'CccHighlighterToggle', desc = 'Highlight Colors' }, - { 'cd', 'RootDir', desc = 'Root Directory' }, - { 'ce', '%SnipRun', desc = 'Execute File' }, - { 'cf', 'lua vim.lsp.buf.format({async = true})', desc = 'Format File' }, - { 'cl', ':g/^\\s*$/d', desc = 'Clean Empty Lines' }, - { 'cm', 'MarkdownPreviewToggle', desc = 'Markdown Preview' }, - { 'cn', 'lua require("snacks").notifier.show_history()', desc = 'Notifications' }, - { 'co', 'Dashboard', desc = 'Dashboard' }, - { 'cp', 'CccPick', desc = 'Pick Color' }, - { 'cr', 'Telescope reloader', desc = 'Reload Module' }, - { 'cs', 'source %', desc = 'Source File' }, + { 'cF', ':retab', desc = 'Fix Tabs' }, + { 'cP', ':CccConvert', desc = 'Convert Color' }, + { 'cR', ':ReloadConfig', desc = 'Reload Configs' }, + { 'cc', ':CccHighlighterToggle', desc = 'Highlight Colors' }, + { 'cd', ':RootDir', desc = 'Root Directory' }, + { 'ce', ':%SnipRun', desc = 'Execute File' }, + { 'cf', ':lua vim.lsp.buf.format({async = true})', desc = 'Format File' }, + { 'cl', '::g/^\\s*$/d', desc = 'Clean Empty Lines' }, + { 'cm', ':MarkdownPreviewToggle', desc = 'Markdown Preview' }, + { 'co', ':Dashboard', desc = 'Dashboard' }, + { 'cp', ':CccPick', desc = 'Pick Color' }, + { 'cs', ':source %', desc = 'Source File' }, { 'C', group = ' Comment' }, { 'Cb', 'CBccbox', desc = 'Comment Box' }, @@ -76,281 +69,251 @@ local normal_mappings = { { 'Cc', 'CBcatalog', desc = 'Catalog' }, { 'Cd', 'CBd', desc = 'Delete Comment Style' }, - { 'd', group = ' Database' }, - { 'dS', 'lua require("dbee").store("json", "buffer", { extra_arg = 0 })', desc = 'To JSON' }, - { 'db', 'DBToggle', desc = 'DB Explorer' }, - { 'dj', 'lua require("dbee").next()', desc = 'DB Next' }, - { 'dk', 'lua require("dbee").prev()', desc = 'DB Prev' }, - { 'ds', 'lua require("dbee").store("csv", "buffer", { extra_arg = 0 })', desc = 'To CSV' }, - { 'dt', 'lua require("dbee").store("table", "buffer", { extra_arg = 0 })', desc = 'To Table' }, - { 'e', group = ' Edit' }, - { 'ea', 'b#', desc = 'Alternate File' }, - + { 'ea', ':b#', desc = 'Alternate File' }, { 'ec', group = 'Edit Configs' }, - { 'eca', 'e ~/dotfiles/zsh/aliases.zsh', desc = 'Shell Aliases' }, - { - 'ecc', - 'lua require("telescope.builtin").find_files({cwd = vim.fn.stdpath("config")})', - desc = 'Neovim Configs', - }, - { - 'ecd', - 'lua require("telescope.builtin").find_files({cwd = vim.fn.expand("$DOTS_DIR")})', - desc = 'Dotfiles', - }, - { 'ecg', 'e ~/.gitconfig', desc = 'Git Config' }, - { 'eck', 'e ~/.config/kitty/kitty.conf', desc = 'Kitty Config' }, - { 'ecn', 'e $MYVIMRC', desc = 'Neovim Init' }, - { 'ecp', 'e ~/dotfiles/nvim/lua/plugins/list.lua', desc = 'Plugin List' }, - { 'ect', 'e ~/dotfiles/tmux/tmux.conf', desc = 'Tmux Config' }, - { 'eF', 'gf', desc = 'File Under Cursor' }, - { 'em', 'e README.md', desc = 'Readme' }, - { 'en', 'enew', desc = 'New File' }, + { 'ecc', ':lua Snacks.picker.files({ cwd = vim.fn.stdpath("config") })', desc = 'Neovim Configs' }, + { 'ecg', ':e ~/.gitconfig', desc = 'Git Config' }, + { 'eck', ':e ~/dotfiles/kitty/kitty.conf', desc = 'Kitty Config' }, + { 'ecn', ':e $MYVIMRC', desc = 'Neovim Init' }, + { 'ecp', ':e ~/dotfiles/nvim/lua/plugins/list.lua', desc = 'Plugin List' }, + { 'ect', ':e ~/dotfiles/tmux/tmux.conf', desc = 'Tmux Config' }, + { 'ecv', ':e ~/.vimrc', desc = 'Vim Config' }, + { 'ecz', ':e $ZDOTDIR/.zshrc', desc = 'Zsh Config' }, + { 'ecZ', ':e $ZDOTDIR/prompt/init.zsh', desc = 'Zsh Prompt Config' }, + { 'ee', ':lua MiniFiles.open()', desc = 'Explore Tree' }, + { 'eE', ':lua Snacks.explorer()', desc = 'File Explorer' }, + { 'ef', 'gf', desc = 'File Under Cursor' }, + { 'em', ':e README.md', desc = 'Readme' }, + { 'en', ':enew', desc = 'New File' }, { 'f', group = ' Find' }, - { 'fa', 'Telescope find_files', desc = 'All Files' }, - { 'fc', 'Telescope git_bcommits', desc = 'File Commits' }, - { 'ff', 'Telescope git_files', desc = 'Find files' }, - { - 'fg', - 'lua require("plugins.tools.telescope-custom").multi_grep()', - desc = 'Find Text', - }, - { 'fj', 'Telescope buffers', desc = 'Buffers' }, - { 'fl', 'Telescope loclist', desc = 'Location List' }, - { 'fm', 'Telescope git_status', desc = 'Modified files' }, - { 'fo', 'Telescope live_grep grep_open_files=true', desc = 'Find in Open Files' }, - { 'fp', 'Telescope resume', desc = 'Last Search' }, - { - 'fP', - 'lua require("telescope.builtin").find_files({cwd = vim.fs.joinpath(vim.fn.stdpath("data"), "lazy")})', - desc = 'Plugin Files', - }, - { 'fq', 'Telescope quickfix', desc = 'Quickfix' }, - { 'fr', 'Telescope oldfiles', desc = 'Recent Files' }, - { 'fs', 'Telescope current_buffer_fuzzy_find', desc = 'Fuzzy Find in File' }, - { 'ft', 'Telescope', desc = 'Panel' }, - { 'fu', 'Telescope undo', desc = 'Undo History' }, - { 'fw', 'Telescope grep_string', desc = 'Find Word' }, + { 'fa', ':lua Snacks.picker.files()', desc = 'Find Files' }, + { 'fb', ':lua Snacks.picker.buffers()', desc = 'Buffers' }, + { 'fc', ':lua Snacks.picker.git_log_file()', desc = 'File Commits' }, + { 'fd', ':lua Snacks.picker.projects()', desc = 'Project Dirs' }, + { 'ff', ':lua Snacks.picker.git_files()', desc = 'Find Git Files' }, + { 'fg', ':lua Snacks.picker.grep()', desc = 'Grep' }, + { 'fl', ':lua Snacks.picker.loclist()', desc = 'Location List' }, + { 'fm', ':lua Snacks.picker.git_status()', desc = 'Modified Files' }, + { 'fo', ':lua Snacks.picker.grep_buffers()', desc = 'Grep Open Buffers' }, + { 'fp', ':lua Snacks.picker.resume()', desc = 'Previous Picker' }, + { 'fq', ':lua Snacks.picker.qflist()', desc = 'Quickfix List' }, + { 'fr', ':lua Snacks.picker.recent()', desc = 'Recent' }, + { 'fs', ':lua Snacks.picker.lines()', desc = 'Buffer Lines' }, + { 'ft', ':lua Snacks.picker.pickers()', desc = 'All Pickers' }, + { 'fu', ':lua Snacks.picker.undo()', desc = 'Undo History' }, + { 'fw', ':lua Snacks.picker.grep_word()', desc = 'Word Grep' }, + { 'fz', ':lua Snacks.picker.zoxide()', desc = 'Zoxide' }, { 'g', group = ' Git' }, - { 'gA', 'Gitsigns stage_buffer', desc = 'Stage Buffer' }, - { 'gP', 'Git push', desc = 'Push' }, - { 'gR', 'Gitsigns reset_buffer', desc = 'Reset Buffer' }, - { 'gS', 'Telescope git_stash', desc = 'Stashed Changes' }, - { 'ga', 'Gitsigns stage_hunk', desc = 'Stage Hunk' }, - { 'gb', "lua require('gitsigns').blame_line({full = true})", desc = 'Blame' }, - { 'gB', "lua require('snacks').git.blame_line()", desc = 'Detailed Blame' }, - { 'gc', 'Telescope git_commits', desc = 'Find Commits' }, - { 'gd', 'Gitsigns diffthis HEAD', desc = 'Diff' }, - { 'gf', 'Git', desc = 'Fugitive Panel' }, - { 'gg', 'lua require("snacks").lazygit()', desc = 'Lazygit' }, - { 'gi', 'Gitsigns preview_hunk', desc = 'Hunk Info' }, - { 'gj', 'Gitsigns next_hunk', desc = 'Next Hunk' }, - { 'gk', 'Gitsigns prev_hunk', desc = 'Prev Hunk' }, - { 'gl', 'lua require("snacks").lazygit.log()', desc = 'Lazygit Log' }, - { 'gL', 'Git log', desc = 'Log' }, + { 'gA', ':Gitsigns stage_buffer', desc = 'Stage Buffer' }, + { 'gC', ':CoAuthor', desc = 'Co-Authors' }, + { 'gP', ':Git push', desc = 'Push' }, + { 'gR', ':Gitsigns reset_buffer', desc = 'Reset Buffer' }, + { 'ga', ':Gitsigns stage_hunk', desc = 'Stage Hunk' }, + { 'gb', ":lua require('gitsigns').blame_line({full = true})", desc = 'Blame' }, + { 'gB', ":lua require('snacks').git.blame_line()", desc = 'Detailed Blame' }, + { 'gd', ':Gitsigns diffthis HEAD', desc = 'Git Diff' }, + { 'gF', ':Git', desc = 'Fugitive Panel' }, + { 'gg', ':lua require("snacks").lazygit()', desc = 'Lazygit' }, + { 'gi', ':Gitsigns preview_hunk', desc = 'Hunk Info' }, + { 'gj', ':Gitsigns next_hunk', desc = 'Next Hunk' }, + { 'gk', ':Gitsigns prev_hunk', desc = 'Prev Hunk' }, + { 'gl', ':lua Snacks.picker.git_log_line()', desc = 'Git Log Line' }, + { 'gL', ':lua Snacks.picker.git_log()', desc = 'Git Log' }, { 'go', group = 'Octohub' }, - { 'gp', 'Git pull', desc = 'Pull' }, - { 'gr', 'Gitsigns reset_hunk', desc = 'Reset Hunk' }, - { 'gs', 'Telescope git_branches', desc = 'Switch Branch' }, + { 'gp', ':Git pull', desc = 'Pull' }, + { 'gr', ':Gitsigns reset_hunk', desc = 'Reset Hunk' }, + { 'gs', ':lua Snacks.picker.git_branches()', desc = 'Git Branches' }, + { 'gS', ':lua Snacks.picker.git_stash()', desc = 'Git Stash' }, { 'gt', group = 'Toggle' }, - { 'gtb', 'Gitsigns toggle_current_line_blame', desc = 'Blame' }, - { 'gtd', 'Gitsigns toggle_deleted', desc = 'Deleted' }, - { 'gtl', 'Gitsigns toggle_linehl', desc = 'Line HL' }, - { 'gtn', 'Gitsigns toggle_numhl', desc = 'Number HL' }, - { 'gts', 'Gitsigns toggle_signs', desc = 'Signs' }, - { 'gtw', 'Gitsigns toggle_word_diff', desc = 'Word Diff' }, - { 'gu', 'Gitsigns undo_stage_hunk', desc = 'Undo Stage Hunk' }, - { 'gv', 'Gitsigns select_hunk', desc = 'Select Hunk' }, - { 'gw', 'lua require("snacks").gitbrowse()', desc = 'Git Browse' }, - - { 'h', group = ' Help' }, - { 'hh', 'Telescope help_tags', desc = 'Help Pages' }, - { 'hi', 'vim.show_pos', desc = 'Inspect Position' }, - { 'hk', 'Lspsaga hover_doc', desc = 'Hover Doc' }, - { 'hm', 'Telescope man_pages', desc = 'Man Pages' }, + { 'gtb', ':Gitsigns toggle_current_line_blame', desc = 'Blame' }, + { 'gtd', ':Gitsigns toggle_deleted', desc = 'Deleted' }, + { 'gtl', ':Gitsigns toggle_linehl', desc = 'Line HL' }, + { 'gtn', ':Gitsigns toggle_numhl', desc = 'Number HL' }, + { 'gts', ':Gitsigns toggle_signs', desc = 'Signs' }, + { 'gtw', ':Gitsigns toggle_word_diff', desc = 'Word Diff' }, + { 'gu', ':Gitsigns undo_stage_hunk', desc = 'Undo Stage Hunk' }, + { 'gv', ':Gitsigns select_hunk', desc = 'Select Hunk' }, + { 'gw', ':lua require("snacks").gitbrowse()', desc = 'Git Browse' }, { 'i', group = ' Insert' }, - { 'iP', 'put %:p', desc = 'Absolute Path' }, - { 'id', "put =strftime('## %a, %d %b, %Y, %r')", desc = 'Date' }, - { 'if', "put =expand('%:t')", desc = 'File Name' }, - { 'in', 'Nerdy', desc = 'Nerd Glyphs' }, - { 'ip', 'put %', desc = 'Relative Path' }, - { 'ir', 'Telescope registers', desc = 'Registers' }, - { 'it', "put =strftime('## %r')", desc = 'Time' }, + { 'id', ":put =strftime('## %a, %d %b, %Y, %r')", desc = 'Date' }, + { 'if', ":put =expand('%:t')", desc = 'File Name' }, + { 'ii', ':lua Snacks.picker.icons()', desc = 'Icons' }, + { 'in', ':Nerdy', desc = 'Nerd Glyphs' }, + { 'ip', ':put %', desc = 'Relative Path' }, + { 'iP', ':put %:p', desc = 'Absolute Path' }, + { 'ir', ':lua Snacks.picker.registers()', desc = 'Registers' }, + { 'it', ":put =strftime('## %r')", desc = 'Time' }, + { 'iv', ':lua Snacks.picker.cliphist()', desc = 'Clipboard' }, { 'j', group = ' Jump' }, - { - 'jN', - "lua require('flash').jump({search = { forward = false, wrap = false, multi_window = false },})", - desc = 'Search Backward', - }, { 'jc', '*', desc = 'Word' }, - { 'jd', 'FlashDiagnostics', desc = 'Diagnostics' }, - { 'jf', 'Telescope jumplist', desc = 'Jumplist' }, + { 'jd', ':FlashDiagnostics', desc = 'Diagnostics' }, + { 'jf', ':lua Snacks.picker.jumps()', desc = 'Jumps' }, { 'jh', '', desc = 'Backward' }, - { 'jj', "lua require('flash').remote()", desc = 'Remote' }, - { 'jk', "lua require('flash').treesitter()", desc = 'Treesitter' }, + { 'jj', ":lua require('flash').remote()", desc = 'Remote' }, + { 'jk', ":lua require('flash').treesitter()", desc = 'Treesitter' }, { 'jl', '', desc = 'Forward' }, + { 'jp', ":lua require('flash').jump({continue = true})", desc = 'Previous Jump' }, + { 'js', ":lua require('flash').jump()", desc = 'Search' }, + { 'jt', ":lua require('flash').treesitter_search()", desc = 'Remote Treesitter' }, { 'jn', - "lua require('flash').jump({search = { forward = true, wrap = false, multi_window = false },})", + ":lua require('flash').jump({search = { forward = true, wrap = false, multi_window = false },})", desc = 'Search Forward', }, - { 'jp', "lua require('flash').jump({continue = true})", desc = 'Previous Jump' }, - { 'js', "lua require('flash').jump()", desc = 'Search' }, - { 'jt', "lua require('flash').treesitter_search()", desc = 'Remote Treesitter' }, + { + 'jN', + ":lua require('flash').jump({search = { forward = false, wrap = false, multi_window = false },})", + desc = 'Search Backward', + }, { 'jw', - 'lua require("flash").jump({ pattern = vim.fn.expand("")})', + ':lua require("flash").jump({ pattern = vim.fn.expand("")})', desc = 'Current Word', }, - { 'k', group = ' Keys' }, - { 'kc', 'Telescope commands', desc = 'Commands' }, - { 'kh', 'Telescope command_history', desc = 'Command History' }, - { 'kk', 'Telescope keymaps', desc = 'Keymaps' }, - { 'ks', 'Telescope search_history', desc = 'Search History' }, - { 'l', group = ' LSP' }, - { 'lF', 'Telescope lsp_references layout_strategy=vertical', desc = 'References' }, - { 'lL', 'Lspsaga show_workspace_diagnostics', desc = 'Workspace Diagnostics' }, - { 'lP', 'Telescope lsp_outgoing_calls', desc = 'Outgoing Calls' }, - { 'lQ', 'LspRestart', desc = 'Restart LSP' }, - { 'lR', 'Lspsaga project_replace', desc = 'Replace' }, - { 'lS', 'Telescope lsp_dynamic_workspace_symbols', desc = 'Workspace Symbols' }, - { 'lT', 'Lspsaga goto_type_definition', desc = 'Goto Type Definition' }, - { 'la', 'Lspsaga code_action', desc = 'Code Action' }, - { 'ld', 'Lspsaga peek_definition', desc = 'Peek Definition' }, - { 'lf', 'Lspsaga finder', desc = 'Finder' }, - { 'lg', 'Lspsaga goto_definition', desc = 'Goto Definition' }, - { 'lh', 'Lspsaga hover_doc', desc = 'Hover' }, - { 'li', 'LspInfo', desc = 'LSP Info' }, - { 'lj', 'Lspsaga diagnostic_jump_next', desc = 'Next Diagnostic' }, - { 'lk', 'Lspsaga diagnostic_jump_prev', desc = 'Prev Diagnostic' }, - { 'll', 'Telescope diagnostics layout_strategy=vertical', desc = 'File Diagnostics' }, - { 'lo', 'Lspsaga outline', desc = 'Outline' }, - { 'lp', 'Telescope lsp_incoming_calls', desc = 'Incoming Calls' }, - { 'lq', 'LspStop', desc = 'Stop LSP' }, - { 'lr', 'Lspsaga rename', desc = 'Rename' }, - { 'ls', 'Telescope lsp_document_symbols theme=get_ivy', desc = 'Document Symbols' }, - { 'lt', 'Lspsaga peek_type_definition', desc = 'Peek Type Definition' }, + { 'la', ':Lspsaga code_action', desc = 'Code Action' }, + { 'ld', ':Lspsaga goto_definition', desc = 'Goto Definition' }, + { 'lD', ':Lspsaga peek_definition', desc = 'Peek Definition' }, + { 'lf', ':Lspsaga finder', desc = 'Finder' }, + { 'lF', ':lua Snacks.picker.lsp_references()', desc = 'References' }, + { 'lh', ':Lspsaga hover_doc', desc = 'Hover' }, + { 'li', ':lua Snacks.picker.lsp_implementations()', desc = 'Goto Implementation' }, + { 'lI', ':LspInfo', desc = 'LSP Info' }, + { 'lj', ':Lspsaga diagnostic_jump_next', desc = 'Next Diagnostic' }, + { 'll', ':lua Snacks.picker.diagnostics_buffer()', desc = 'Buffer Diagnostics' }, + { 'lL', ':lua Snacks.picker.diagnostics()', desc = 'Diagnostics' }, + { 'lk', ':Lspsaga diagnostic_jump_prev', desc = 'Prev Diagnostic' }, + { 'lo', ':Lspsaga outline', desc = 'Outline' }, + { 'lp', ':lua Snacks.picker.lsp_declarations()', desc = 'Goto Definition' }, + { 'lq', ':LspStop', desc = 'Stop LSP' }, + { 'lQ', ':LspRestart', desc = 'Restart LSP' }, + { 'lr', ':Lspsaga rename', desc = 'Rename' }, + { 'lR', ':Lspsaga project_replace', desc = 'Replace' }, + { 'ls', ':lua Snacks.picker.lsp_symbols()', desc = 'Symbols' }, + { 'lS', ':lua Snacks.picker.lsp_workspace_symbols()', desc = 'Workspace Symbols' }, + { 'lt', ':Lspsaga goto_type_definition', desc = 'Goto Type Definition' }, + { 'lT', ':Lspsaga peek_type_definition', desc = 'Peek Type Definition' }, { 'm', group = ' Marks' }, - { 'm1', "lua require('markit').toggle_bookmark1()", desc = 'Toggle Bookmark 0' }, - { 'm2', "lua require('markit').toggle_bookmark2()", desc = 'Toggle Bookmark 2' }, - { 'm3', "lua require('markit').toggle_bookmark3()", desc = 'Toggle Bookmark 3' }, - { 'm4', "lua require('markit').toggle_bookmark4()", desc = 'Toggle Bookmark 4' }, - { 'mD', "lua require('markit').delete_buf()", desc = 'Delete Buffer' }, - { 'mP', "lua require('markit').preview()", desc = 'Preview' }, { 'mb', - "lua require('telescope').extensions.markit_nvim.bookmarks_list_all()", + ":lua require('telescope').extensions.markit.bookmarks_list_all()", desc = 'Bookmarks', }, - { 'md', "lua require('markit').delete_line()", desc = 'Delete Line' }, - { 'mh', "lua require('markit').next_bookmark()", desc = 'Next Bookmark' }, - { 'mj', "lua require('markit').next()", desc = 'Next' }, - { 'mk', "lua require('markit').prev()", desc = 'Previous' }, - { 'ml', "lua require('markit').prev_bookmark()", desc = 'Previous Bookmark' }, - { 'mm', 'Telescope markit', desc = 'All Marks' }, - { 'mn', group = 'Next Bookmark Group' }, - { 'mn1', "lua require('markit').next_bookmark1()", desc = 'Next Bookmark 1' }, - { 'mn2', "lua require('markit').next_bookmark2()", desc = 'Next Bookmark 2' }, - { 'mn3', "lua require('markit').next_bookmark3()", desc = 'Next Bookmark 3' }, - { 'mn4', "lua require('markit').next_bookmark4()", desc = 'Next Bookmark 4' }, - { 'mp', group = 'Previous Bookmark Group' }, - { 'mp1', "lua require('markit').prev_bookmark1()", desc = 'Previous Bookmark 1' }, - { 'mp2', "lua require('markit').prev_bookmark2()", desc = 'Previous Bookmark 2' }, - { 'mp3', "lua require('markit').prev_bookmark3()", desc = 'Previous Bookmark 3' }, - { 'mp4', "lua require('markit').prev_bookmark4()", desc = 'Previous Bookmark 4' }, - { 'ms', "lua require('markit').set_next()", desc = 'Set Next' }, - { 'mt', "lua require('markit').toggle()", desc = 'Toggle' }, - { 'mx', "lua require('markit').delete_bookmark()", desc = 'Delete Bookmark' }, + { + 'mB', + ":lua require('telescope').extensions.markit.bookmarks_list_all({project_only = true})", + desc = 'Bookmarks In Project', + }, + { 'md', ":lua require('markit').delete_line()", desc = 'Delete Marks In Line' }, + { 'mD', ":lua require('markit').delete_buf()", desc = 'Delete Marks In Buffer' }, + { 'mg', group = 'Group Bookmarks' }, + { 'mG', group = 'Group Bookmarks In Project' }, + { 'mh', ":lua require('markit').prev_bookmark()", desc = 'Previous Bookmark' }, + { 'mj', ":lua require('markit').next()", desc = 'Next' }, + { 'mk', ":lua require('markit').prev()", desc = 'Previous' }, + { 'ml', ":lua require('markit').next_bookmark()", desc = 'Next Bookmark' }, + -- { 'mm', ':Telescope markit', desc = 'All Marks' }, + { 'mm', ':lua Snacks.picker.marks()', desc = 'Marks' }, + { 'mn', group = 'Next Bookmark In Group' }, + { 'mp', group = 'Previous Bookmark In Group' }, + { 'mP', ":lua require('markit').preview()", desc = 'Preview' }, + { 'ms', ":lua require('markit').set_next()", desc = 'Set Next' }, + { 'mt', ":lua require('markit').toggle()", desc = 'Toggle' }, + { 'mx', ":lua require('markit').delete_bookmark()", desc = 'Delete Bookmark' }, { 'o', group = ' Options' }, - { 'oc', 'Telescope colorscheme', desc = 'Colorscheme' }, - { 'oh', 'Telescope highlights', desc = 'Highlight Colors' }, - { 'on', 'set relativenumber!', desc = 'Relative Numbers' }, - { 'oo', 'Telescope vim_options', desc = 'All Options' }, + { 'oa', ':lua Snacks.picker.autocmds()', desc = 'Autocmds' }, + { 'oc', ':lua Snacks.picker.command_history()', desc = 'Command History' }, + { 'od', ':lua Snacks.picker.help()', desc = 'Docs' }, + { 'og', ':lua Snacks.picker.commands()', desc = 'Commands' }, + { 'oh', ':lua Snacks.picker.highlights()', desc = 'Highlights' }, + { 'oi', 'vim.show_pos', desc = 'Inspect Position' }, + { 'ok', ':lua Snacks.picker.keymaps()', desc = 'Keymaps' }, + { 'om', ':lua Snacks.picker.man()', desc = 'Man Pages' }, + { 'on', ':lua Snacks.picker.notifications()', desc = 'Notification History' }, + { 'or', ':set relativenumber!', desc = 'Relative Numbers' }, + { 'os', ':lua Snacks.picker.search_history()', desc = 'Search History' }, + { 'ot', ':lua Snacks.picker.colorschemes()', desc = 'Colorschemes' }, { 'p', group = ' Packages' }, - { 'pc', 'Lazy check', desc = 'Check' }, - { 'pd', 'Lazy debug', desc = 'Debug' }, - { 'pe', 'lua require("snacks").profiler.scratch()', desc = 'Profiler Scratch' }, - { 'pf', 'lua require("snacks").profiler.pick()', desc = 'Profiler Pick' }, - { 'pi', 'Lazy install', desc = 'Install' }, - { 'pl', 'Lazy log', desc = 'Log' }, - { 'pm', 'Mason', desc = 'Mason' }, - { 'pp', 'Lazy', desc = 'Plugins' }, - { 'pP', 'Lazy profile', desc = 'Profile' }, - { 'pr', 'Lazy restore', desc = 'Restore' }, - { 'ps', 'Lazy sync', desc = 'Sync' }, - { 'pt', 'lua require("snacks").profiler.toggle()', desc = 'Profiler Toggle' }, - { 'pu', 'Lazy update', desc = 'Update' }, - { 'px', 'Lazy clean', desc = 'Clean' }, + { 'pc', ':Lazy check', desc = 'Check' }, + { 'pd', ':Lazy debug', desc = 'Debug' }, + { 'pe', ':lua require("snacks").profiler.scratch()', desc = 'Profiler Scratch' }, + { 'pf', ':lua require("snacks").profiler.pick()', desc = 'Profiler Pick' }, + { 'pi', ':Lazy install', desc = 'Install' }, + { 'pl', ':Lazy log', desc = 'Log' }, + { 'pm', ':Mason', desc = 'Mason' }, + { 'pp', ':Lazy', desc = 'Plugins' }, + { 'pP', ':Lazy profile', desc = 'Profile' }, + { 'pr', ':Lazy restore', desc = 'Restore' }, + { 'ps', ':Lazy sync', desc = 'Sync' }, + { 'pt', ':lua require("snacks").profiler.toggle()', desc = 'Profiler Toggle' }, + { 'pu', ':Lazy update', desc = 'Update' }, + { 'px', ':Lazy clean', desc = 'Clean' }, + { 'pS', ':lua Snacks.picker.lazy()', desc = 'Search for Plugin Spec' }, { 'q', group = ' Quit' }, - { 'qa', 'qall', desc = 'Quit All' }, - { 'qc', 'bw', desc = 'Close Buffer' }, - { 'qd', 'lua require("snacks").bufdelete()', desc = 'Delete Buffer' }, - { 'qf', 'qall!', desc = 'Force Quit' }, + { 'qa', ':qall', desc = 'Quit All' }, + { 'qb', ':bw', desc = 'Close Buffer' }, + { 'qd', ':lua require("snacks").bufdelete()', desc = 'Delete Buffer' }, + { 'qf', ':qall!', desc = 'Force Quit' }, { 'qo', ':%bdelete|b#|bdelete#', desc = 'Close Others' }, - { 'qq', 'q', desc = 'Quit' }, + { 'qq', ':q', desc = 'Quit' }, { 'qs', 'c', desc = 'Close Split' }, - { 'qw', 'wq', desc = 'Write and Quit' }, + { 'qw', ':wq', desc = 'Write and Quit' }, { 'r', group = ' Refactor' }, - { - 'rR', - "lua require('telescope').extensions.refactoring.refactors()", - desc = 'Refactor Commands', - }, - { 'rS', "lua require('spectre').open()", desc = 'Replace' }, - { 'rb', "lua require('spectre').open_file_search()", desc = 'Replace Buffer' }, - { 'rd', '', desc = 'Go To Definition' }, - { 're', "lua require('refactoring').refactor('Extract Block')", desc = 'Extract Block' }, - { - 'rf', - "lua require('refactoring').refactor('Extract Block To File')", - desc = 'Extract To File', - }, + { 'rb', ":lua require('spectre').open_file_search()", desc = 'Replace Buffer' }, + { 're', ":lua require('refactoring').refactor('Extract Block')", desc = 'Extract Block' }, + { 'ri', ":lua require('refactoring').refactor('Inline Variable')", desc = 'Inline Variable' }, + { 'rs', ':%s/\\<\\>//gI', desc = 'Replace Word' }, + { 'rS', ":lua require('spectre').open()", desc = 'Replace' }, + { 'rt', ':lua Snacks.picker.treesitter()', desc = 'Treesitter Find' }, + { 'rv', ":lua require('refactoring').refactor('Extract Variable')", desc = 'Extract Variable' }, + { 'rw', ":lua require('spectre').open_visual({select_word=true})", desc = 'Replace Word' }, + { 'rd', '', desc = 'Go To Definition' }, -- treesitter navigation { 'rh', '', desc = 'List Definition Head' }, - { 'ri', "lua require('refactoring').refactor('Inline Variable')", desc = 'Inline Variable' }, { 'rj', '', desc = 'Next Usage' }, { 'rk', '', desc = 'Previous Usage' }, { 'rl', '', desc = 'List Definition' }, { 'rn', '', desc = 'Swap Next' }, { 'rp', '', desc = 'Swap Previous' }, { 'rr', '', desc = 'Smart Rename' }, - { 'rs', ':%s/\\<\\>//gI', desc = 'Replace Word' }, - { 'rv', "lua require('refactoring').refactor('Extract Variable')", desc = 'Extract Variable' }, - { 'rw', "lua require('spectre').open_visual({select_word=true})", desc = 'Replace Word' }, + { + 'rf', + ":lua require('refactoring').refactor('Extract Block To File')", + desc = 'Extract To File', + }, { 's', group = ' Split' }, - { 's+', 'resize +10', desc = 'Increase window height' }, - { 's-', 'vertical resize -20', desc = 'Decrease window width' }, + { 's+', ':resize +10', desc = 'Increase window height' }, + { 's-', ':vertical resize -20', desc = 'Decrease window width' }, { 's/', 's', desc = 'Split Below' }, - { 's=', 'vertical resize +20', desc = 'Increase window width' }, - { 'sH', 'vertical resize -10', desc = 'Decrease window width' }, - { 'sJ', 'resize -5', desc = 'Decrease window height' }, - { 'sK', 'resize +5', desc = 'Increase window height' }, - { 'sL', 'vertical resize +10', desc = 'Increase window width' }, + { 's=', ':vertical resize +20', desc = 'Increase window width' }, + { 'sH', ':vertical resize -10', desc = 'Decrease window width' }, + { 'sJ', ':resize -5', desc = 'Decrease window height' }, + { 'sK', ':resize +5', desc = 'Increase window height' }, + { 'sL', ':vertical resize +10', desc = 'Increase window width' }, { 's\\', 'v', desc = 'Split Right' }, - { 's_', 'resize -10', desc = 'Decrease window height' }, + { 's_', ':resize -10', desc = 'Decrease window height' }, { 's`', 'p', desc = 'Previous Window' }, - { 'sa', 'split', desc = 'Horizontal Split' }, - { 'sc', 'tabclose', desc = 'Close Tab' }, - { 'sf', 'tabfirst', desc = 'First Tab' }, + { 'sa', ':split', desc = 'Horizontal Split' }, + { 'sc', ':tabclose', desc = 'Close Tab' }, + { 'sf', ':tabfirst', desc = 'First Tab' }, { 'sh', 'h', desc = 'Move Left' }, { 'sj', 'j', desc = 'Move Down' }, { 'sk', 'k', desc = 'Move Up' }, { 'sl', 'l', desc = 'Move Right' }, - { 'sp', 'NavigatorPrevious', desc = 'Previous Pane' }, + { 'sp', ':NavigatorPrevious', desc = 'Previous Pane' }, { 'sq', 'c', desc = 'Close Split' }, - { 'ss', 'vsplit', desc = 'Vertical Split' }, + { 'ss', ':vsplit', desc = 'Vertical Split' }, { 't', group = ' Terminal' }, { 't1', '1ToggleTerm', desc = 'Toggle Terminal' }, @@ -359,53 +322,83 @@ local normal_mappings = { { 'tv', 'Vterm', desc = 'Vertical Terminal' }, { 'tc', 'close', desc = 'Hide Terminal' }, - { 'u', group = ' Test' }, - { 'uc', 'lua require("neotest").run.run()', desc = 'Run Current Test' }, - { 'uf', 'lua require("neotest").run.run(vim.fn.expand("%"))', desc = 'Run Test File' }, - { 'uo', 'Neotest output-panel', desc = 'Test Output' }, - { 'us', 'Neotest summary', desc = 'Test Summary' }, - - { 'v', group = ' Select' }, - { 'vB', 'vab', desc = 'Around Bracket' }, - { 'vP', 'vap', desc = 'Around Para' }, - { 'vQ', 'vaq', desc = 'Around Quote' }, - { 'vb', 'vib', desc = 'Bracket' }, - { 'vp', 'vip', desc = 'Paragraph' }, - { 'vq', 'viq', desc = 'Quote' }, - { 'w', group = ' Writing' }, - { 'wc', 'set spell!', desc = 'Spellcheck' }, - { 'wd', 'lua require("snacks").dim.enable()', desc = 'Dim On' }, - { 'wD', 'lua require("snacks").dim.disable()', desc = 'Dim Off' }, - { 'wf', "lua require'utils'.sudo_write()", desc = 'Force Write' }, + { 'wc', ':set spell!', desc = 'Spellcheck' }, + { 'wd', ':lua require("snacks").dim.enable()', desc = 'Dim On' }, + { 'wD', ':lua require("snacks").dim.disable()', desc = 'Dim Off' }, + { 'wf', ":lua require'utils'.sudo_write()", desc = 'Force Write' }, { 'wj', ']s', desc = 'Next Misspell' }, { 'wk', '[s', desc = 'Prev Misspell' }, - { 'wn', 'WriteNoFormat', desc = 'Write Without Formatting' }, - { 'wq', 'wq', desc = 'Write and Quit' }, - { 'wr', '%d+', desc = 'Remove All Text' }, - { 'ws', 'Telescope spell_suggest', desc = 'Suggestions' }, - { 'ww', 'w', desc = 'Write and Quit' }, - { 'wz', 'lua require("snacks").zen.zen()', desc = 'Zen' }, - { 'wZ', 'lua require("snacks").zen.zoom()', desc = 'Zoom' }, - { 'x', 'x', desc = ' Save and Quit' }, + { 'wn', ':WriteNoFormat', desc = 'Write Without Formatting' }, + { 'ws', ':lua Snacks.picker.spelling()', desc = 'Spell Suggestions' }, + { 'wq', ':wq', desc = 'Write and Quit' }, + { 'ww', ':w', desc = 'Write' }, + { 'wz', ':lua require("snacks").zen.zen()', desc = 'Zen' }, + { 'wZ', ':lua require("snacks").zen.zoom()', desc = 'Zoom' }, { 'y', group = ' Yank' }, - { 'yL', 'CopyAbsolutePathWithLine', desc = 'Absolute Path with Line' }, - { 'yP', 'CopyAbsolutePath', desc = 'Absolute Path' }, - { 'ya', '%y+', desc = 'Copy Whole File' }, - { 'yf', 'CopyFileName', desc = 'File Name' }, - { 'yg', 'lua require"gitlinker".get_buf_range_url()', desc = 'Copy Git URL' }, - { 'yl', 'CopyRelativePathWithLine', desc = 'Relative Path with Line' }, - { 'yp', 'CopyRelativePath', desc = 'Relative Path' }, + { 'yL', ':CopyAbsolutePathWithLine', desc = 'Absolute Path with Line' }, + { 'yP', ':CopyAbsolutePath', desc = 'Absolute Path' }, + { 'ya', ':%y+', desc = 'Copy Whole File' }, + { 'yf', ':CopyFileName', desc = 'File Name' }, + { 'yg', ':lua require"gitlinker".get_buf_range_url()', desc = 'Copy Git URL' }, + { 'yl', ':CopyRelativePathWithLine', desc = 'Relative Path with Line' }, + { 'yp', ':CopyRelativePath', desc = 'Relative Path' }, } --- Jump to file mappings +-- Numerical mappings + for i = 1, 9 do + table.insert(normal_mappings, { + string.format('n%d', i), + string.format('Tdo %d', i), + desc = string.format('Todo %d Days In Future', i), + }) + + table.insert(normal_mappings, { + string.format('np%d', i), + string.format('Tdo -%d', i), + desc = string.format('Todo %d Days From Past', i), + }) + table.insert(normal_mappings, { string.format('f%d', i), string.format('LualineBuffersJump%d', i), desc = string.format('File %d', i), }) + + table.insert(normal_mappings, { + string.format('m%d', i), + string.format('lua require("markit").toggle_bookmark%d()', i), + desc = string.format('Toggle Group %d Bookmark', i), + }) + + table.insert(normal_mappings, { + string.format('mp%d', i), + string.format('lua require("markit").prev_bookmark%d()', i), + desc = string.format('Previous Group %d Bookmarks', i), + }) + + table.insert(normal_mappings, { + string.format('mn%d', i), + string.format('lua require("markit").next_bookmark%d()', i), + desc = string.format('Next Group %d Bookmarks', i), + }) + + table.insert(normal_mappings, { + string.format('mg%d', i), + string.format('lua require("telescope").extensions.markit.bookmarks_list_all({group = %d})', i), + desc = string.format('Group %d Bookmarks', i), + }) + + table.insert(normal_mappings, { + string.format('mG%d', i), + string.format( + 'lua require("telescope").extensions.markit.bookmarks_list_all({group = %d, project_only = true})', + i + ), + desc = string.format('Group %d Bookmarks In Project', i), + }) end local visual_mappings = { @@ -435,23 +428,23 @@ local visual_mappings = { { 'j', group = ' Jump' }, { 'jN', - "lua require('flash').jump({search = { forward = false, wrap = false, multi_window = false },})", + ":lua require('flash').jump({search = { forward = false, wrap = false, multi_window = false },})", desc = 'Search Backward', }, - { 'jd', 'FlashDiagnostics', desc = 'Diagnostics' }, - { 'jj', "lua require('flash').remote()", desc = 'Remote' }, - { 'jk', "lua require('flash').treesitter()", desc = 'Treesitter' }, + { 'jd', ':FlashDiagnostics', desc = 'Diagnostics' }, + { 'jj', ":lua require('flash').remote()", desc = 'Remote' }, + { 'jk', ":lua require('flash').treesitter()", desc = 'Treesitter' }, { 'jn', - "lua require('flash').jump({search = { forward = true, wrap = false, multi_window = false },})", + ":lua require('flash').jump({search = { forward = true, wrap = false, multi_window = false },})", desc = 'Search Forward', }, - { 'jp', "lua require('flash').jump({continue = true})", desc = 'Previous Jump' }, - { 'js', "lua require('flash').jump()", desc = 'Search' }, - { 'jt', "lua require('flash').treesitter_search()", desc = 'Remote Treesitter' }, + { 'jp', ":lua require('flash').jump({continue = true})", desc = 'Previous Jump' }, + { 'js', ":lua require('flash').jump()", desc = 'Search' }, + { 'jt', ":lua require('flash').treesitter_search()", desc = 'Remote Treesitter' }, { 'jw', - 'lua require("flash").jump({ pattern = vim.fn.expand("")})', + ':lua require("flash").jump({ pattern = vim.fn.expand("")})', desc = 'Current Word', }, @@ -472,23 +465,18 @@ local visual_mappings = { { 'r', group = ' Refactor' }, { 're', - "lua require('refactoring').refactor('Extract Function')", + ":lua require('refactoring').refactor('Extract Function')", desc = 'Extract Function', }, { 'rf', - "lua require('refactoring').refactor('Extract Function To File')", + ":lua require('refactoring').refactor('Extract Function To File')", desc = 'Extract To File', }, - { 'ri', "lua require('refactoring').refactor('Inline Variable')", desc = 'Inline Variable' }, - { - 'rr', - "lua require('telescope').extensions.refactoring.refactors()", - desc = 'Refactor Commands', - }, + { 'ri', ":lua require('refactoring').refactor('Inline Variable')", desc = 'Inline Variable' }, { 'rv', - "lua require('refactoring').refactor('Extract Variable')", + ":lua require('refactoring').refactor('Extract Variable')", desc = 'Extract Variable', }, @@ -528,10 +516,59 @@ local no_leader_mappings = { { ']o', group = 'Textobjects' }, } +local tmux_mappings = { + { '', ':NavigatorLeft', desc = 'Move Left' }, + { '', ':NavigatorDown', desc = 'Move Down' }, + { '', ':NavigatorUp', desc = 'Move Up' }, + { '', ':NavigatorRight', desc = 'Move Right' }, + { '', ':NavigatorPrevious', desc = 'Previous Pane' }, +} + if vim.fn.exists('$TMUX') == 1 then vim.tbl_extend('force', no_leader_mappings, tmux_mappings) end +if util.get_user_config('enable_test_runner', false) then + local test_runner_bindings = { + { 'u', group = ' Test' }, + { 'uc', ':lua require("neotest").run.run()', desc = 'Run Current Test' }, + { 'uf', ':lua require("neotest").run.run(vim.fn.expand("%"))', desc = 'Run Test File' }, + { 'uo', ':Neotest output-panel', desc = 'Test Output' }, + { 'us', ':Neotest summary', desc = 'Test Summary' }, + } + vim.tbl_extend('force', normal_mappings, test_runner_bindings) +end + +if util.get_user_config('enable_db_explorer', false) then + local db_explorer_bindings = { + { 'd', group = ' Database' }, + { 'dS', ':lua require("dbee").store("json", "buffer", { extra_arg = 0 })', desc = 'To JSON' }, + { 'db', ':DBToggle', desc = 'DB Explorer' }, + { 'dj', ':lua require("dbee").next()', desc = 'DB Next' }, + { 'dk', ':lua require("dbee").prev()', desc = 'DB Prev' }, + { 'ds', ':lua require("dbee").store("csv", "buffer", { extra_arg = 0 })', desc = 'To CSV' }, + { 'dt', ':lua require("dbee").store("table", "buffer", { extra_arg = 0 })', desc = 'To Table' }, + } + vim.tbl_extend('force', normal_mappings, db_explorer_bindings) +end + +if util.get_user_config('enable_debugger', false) then + local debugger_bindings = { + { 'b', group = ' Debug' }, + { 'bO', ':DapStepOut', desc = 'Out' }, + { 'bR', ':DapRestartFrame', desc = 'Restart Frame' }, + { 'bb', ':DapToggleBreakpoint', desc = 'Breakpoint' }, + { 'bc', ':DapContinue', desc = 'Continue' }, + { 'bi', ':DapStepInto', desc = 'Into' }, + { 'bl', ":lua require'dap'.run_last()", desc = 'Last' }, + { 'bo', ':DapStepOver', desc = 'Over' }, + { 'br', ':DapToggleRepl', desc = 'Repl' }, + { 'bt', ':DapUIToggle', desc = 'Debugger' }, + { 'bx', ':DapTerminate', desc = 'Exit' }, + } + vim.tbl_extend('force', normal_mappings, debugger_bindings) +end + local user_keybindings = require('lib.util').get_user_config('user_keybindings', {}) which_key.setup(setup) diff --git a/lua/plugins/ui/snacks.lua b/lua/plugins/ui/snacks.lua index 13124ae..7423bf0 100644 --- a/lua/plugins/ui/snacks.lua +++ b/lua/plugins/ui/snacks.lua @@ -1,6 +1,54 @@ local Snacks = require('snacks') local icons = require('lib.icons') +local function files_layout(preview_width, height, width) + preview_width = preview_width or 0.6 + height = height or 0.8 + width = width or 0.9 + return { + layout = { + box = 'horizontal', + width = width, + min_width = 120, + height = height, + { + box = 'vertical', + border = 'rounded', + title = '{title} {live} {flags}', + { win = 'input', height = 1, border = 'bottom' }, + { win = 'list', border = 'none' }, + }, + { win = 'preview', title = '{preview}', border = 'rounded', width = preview_width }, + }, + } +end + +local function palette_layout(height, width) + height = height or 0.4 + width = width or 0.6 + return { + preview = false, + layout = { + backdrop = false, + row = 1, + width = width, + min_width = 80, + height = height, + border = 'rounded', + box = 'vertical', + { + win = 'input', + height = 1, + border = 'rounded', + title = '{title} {live} {flags}', + title_pos = 'center', + }, + { win = 'list', border = 'hpad' }, + { win = 'preview', title = '{preview}', border = 'rounded' }, + }, + } +end + Snacks.setup({ animate = { enabled = true, @@ -11,7 +59,7 @@ Snacks.setup({ bigfile = { enabled = true, notify = true, - size = 1.5 * 1024 * 1024, -- 1.5MB + size = 100 * 1024, -- 100 KB }, bufdelete = { enabled = true }, dashboard = { @@ -51,8 +99,10 @@ Snacks.setup({ siblings = true, }, }, + explorer = { enabled = false }, git = { enabled = true }, gitbrowse = { enabled = true }, + image = { enabled = true }, indent = { enabled = true, priority = 1, @@ -79,6 +129,7 @@ Snacks.setup({ win = { style = 'input' }, expand = true, }, + layout = { enabled = true }, lazygit = { enabled = true }, notifier = { enabled = true, @@ -103,6 +154,40 @@ Snacks.setup({ refresh = 50, }, notify = { enabled = true }, + picker = { + enabled = true, + icon = icons.ui.Search, + icon_hl = 'SnacksPickerIcon', + icon_pos = 'left', + prompt_pos = 'title', + win = { style = 'picker' }, + expand = true, + sources = { + -- layout options: dropdown, horizontal, vertical, vscode, ivy, ivy_split, telescope, top, left, right, bottom, sidebar + buffers = { layout = files_layout() }, + commands = { layout = palette_layout() }, + command_history = { layout = palette_layout() }, + files = { + hidden = true, + layout = files_layout(), + }, + icons = { + icon_sources = { 'nerd_fonts', 'emoji' }, + layout = palette_layout(), + }, + git_files = { layout = files_layout() }, + git_branches = { layout = { preset = 'vertical' } }, + git_status = { layout = files_layout() }, + help = { layout = { preset = 'ivy_split' } }, + man = { layout = { preset = 'ivy_split' } }, + projects = { layout = files_layout(0.8) }, + recent = { layout = files_layout() }, + search_history = { layout = palette_layout() }, + smart = { layout = files_layout() }, + undo = { layout = { preset = 'ivy' } }, + zoxide = { layout = files_layout(0.7) }, + }, + }, profiler = { enabled = true }, quickfile = { enabled = true }, rename = { enabled = true },