diff options
Diffstat (limited to '.config/nvim/lua/plugins')
23 files changed, 777 insertions, 0 deletions
diff --git a/.config/nvim/lua/plugins/autopairs.lua b/.config/nvim/lua/plugins/autopairs.lua new file mode 100644 index 0000000..a9641f7 --- /dev/null +++ b/.config/nvim/lua/plugins/autopairs.lua @@ -0,0 +1,6 @@ +return { + 'windwp/nvim-autopairs', + event = "InsertEnter", + opts = {}, +} + diff --git a/.config/nvim/lua/plugins/bufferline.lua b/.config/nvim/lua/plugins/bufferline.lua new file mode 100644 index 0000000..b7d9c84 --- /dev/null +++ b/.config/nvim/lua/plugins/bufferline.lua @@ -0,0 +1,23 @@ +return { + { + "akinsho/bufferline.nvim", + dependencies = { "nvim-tree/nvim-web-devicons" }, + event = "BufEnter", + keys = { + { "<A-,>", "<Cmd>BufferLineCyclePrev<CR>", desc = "Previous buffer" }, + { "<A-.>", "<Cmd>BufferLineCycleNext<CR>", desc = "Next buffer" }, + { "<A-x>", "<Cmd>bdelete<CR>", desc = "Delete buffer" }, + { "<A-X>", "<Cmd>bdelete!<CR>", desc = "Force delete buffer" }, + { "<A-space>", "<Cmd>BufferLinePick<CR>", desc = "Pick buffer" }, + }, + config = function() + require("bufferline").setup({ + highlights = require("catppuccin.groups.integrations.bufferline").get(), + options = { + indicator = { icon = " " }, + diagnostics = "nvim_lsp", + }, + }) + end, + }, +} diff --git a/.config/nvim/lua/plugins/catppuccin.lua b/.config/nvim/lua/plugins/catppuccin.lua new file mode 100644 index 0000000..f4c1987 --- /dev/null +++ b/.config/nvim/lua/plugins/catppuccin.lua @@ -0,0 +1,19 @@ +return { + { + "catppuccin/nvim", + name = "catppuccin", + priority = 1000, + config = function() + require("catppuccin").setup({ + flavour = "macchiato", + integrations = { + leap = true, + neogit = true, + notify = true, + neotest = true, + }, + }) + vim.cmd.colorscheme("catppuccin") + end, + }, +} diff --git a/.config/nvim/lua/plugins/cmp.lua b/.config/nvim/lua/plugins/cmp.lua new file mode 100644 index 0000000..19b091f --- /dev/null +++ b/.config/nvim/lua/plugins/cmp.lua @@ -0,0 +1,132 @@ +return { + { + "hrsh7th/nvim-cmp", + dependencies = { + "hrsh7th/cmp-buffer", + "hrsh7th/cmp-path", + "petertriho/cmp-git", + "nvim-lua/plenary.nvim", + "hrsh7th/cmp-nvim-lsp", + "saadparwaiz1/cmp_luasnip", + { + "L3MON4D3/LuaSnip", + dependencies = { "rafamadriz/friendly-snippets" }, + config = function() + require("luasnip.loaders.from_vscode").lazy_load() + end, + }, + }, + event = "InsertEnter", + config = function() + local cmp = require("cmp") + local luasnip = require("luasnip") + + cmp.setup({ + mapping = cmp.mapping.preset.insert({ + ["<C-b>"] = cmp.mapping.scroll_docs(-4), + ["<C-f>"] = cmp.mapping.scroll_docs(4), + ["<C-Space>"] = cmp.mapping.complete(), + ["<C-e>"] = cmp.mapping.abort(), + ["<CR>"] = cmp.mapping.confirm({ select = true }), + ["<Tab>"] = cmp.mapping(function(fallback) + if cmp.visible() then + cmp.select_next_item() + elseif luasnip.expand_or_jumpable() then + luasnip.expand_or_jump() + else + fallback() + end + end, { "i", "s" }), + ["<S-Tab>"] = cmp.mapping(function(fallback) + if cmp.visible() then + cmp.select_prev_item() + elseif luasnip.jumpable(-1) then + luasnip.jump(-1) + else + fallback() + end + end, { "i", "s" }), + }), + snippet = { + expand = function(args) + luasnip.lsp_expand(args.body) + end + }, + sources = cmp.config.sources({ + { name = "luasnip" }, + { name = "nvim_lsp" }, + { name = "path" }, + { name = "conjure" }, + { name = "git" }, + }, { + { name = "buffer" }, + }), + }) + + require("cmp_git").setup() + end, + }, + { + "hrsh7th/cmp-cmdline", + dependencies = { + "hrsh7th/nvim-cmp", + "hrsh7th/cmp-buffer", + "hrsh7th/cmp-path", + }, + event = "CmdlineEnter", + config = function() + local cmp = require("cmp") + cmp.setup.cmdline({ "/", "?" }, { + mapping = cmp.mapping.preset.cmdline(), + sources = cmp.config.sources({ + { name = "buffer" }, + }), + }) + cmp.setup.cmdline(":", { + mapping = cmp.mapping.preset.cmdline(), + sources = cmp.config.sources({ + { name = "path" }, + }, { + { + name = "cmdline", + option = { + ignore_cmds = { "Man", "!" }, + }, + }, + }) + }) + end, + }, + { + "PaterJason/cmp-conjure", + dependencies = { "hrsh7th/nvim-cmp" }, + ft = { + "clojure", + "fennel", + "janet", + "racket", + "hy", + "scheme", + "guile", + "commonlisp", + "julia", + "rust", + "lua", + "python", + }, + }, + { + "rcarriga/cmp-dap", + dependencies = { "hrsh7th/nvim-cmp" }, + ft = { "dap-repl", "dapui_watches", "dapui_hover" }, + config = function() + local cmp = require("cmp") + cmp.setup.filetype({ "dap-repl", "dapui_watches", "dapui_hover" }, { + sources = { + { name = "dap" }, + }, + }) + end, + }, +} + diff --git a/.config/nvim/lua/plugins/colorizer.lua b/.config/nvim/lua/plugins/colorizer.lua new file mode 100644 index 0000000..51eb0a5 --- /dev/null +++ b/.config/nvim/lua/plugins/colorizer.lua @@ -0,0 +1,20 @@ +return { + { + "nvchad/nvim-colorizer.lua", + event = { "BufReadPre", "BufNewFile" }, + opts = { + user_default_options = { + names = false, + RRGGBBAA = true, + virtualtext = " ", + }, + buftypes = { + "*", + "!dashboard", + "!lazy", + "!popup", + "!prompt", + }, + }, + }, +} diff --git a/.config/nvim/lua/plugins/dap.lua b/.config/nvim/lua/plugins/dap.lua new file mode 100644 index 0000000..040511c --- /dev/null +++ b/.config/nvim/lua/plugins/dap.lua @@ -0,0 +1,51 @@ +return { + { + "mfussenegger/nvim-dap", + dependencies = { + "theHamsta/nvim-dap-virtual-text", + { "leoluz/nvim-dap-go", opts = {} }, + { + "mfussenegger/nvim-dap-python", + config = function() + require("dap-python").setup(vim.fn.exepath("python")) + end, + }, + { + "rcarriga/nvim-dap-ui", + dependencies = { "mfussenegger/nvim-dap" }, + keys = { + { "<leader>du", function() require("dapui").toggle() end, desc = "Toggle UI" }, + { "<leader>de", function() require("dapui").eval() end, desc = "Eval", mode = { "n", "v" } }, + }, + config = function() + local dapui = require("dapui") + dapui.setup() + + local dap = require("dap") + dap.listeners.after.event_initialized["dapui_config"] = dapui.open + dap.listeners.before.event_terminated["dapui_config"] = dapui.close + dap.listeners.before.event_exited["dapui_config"] = dapui.close + end, + }, + }, + keys = { + { "<leader>db", function() require("dap").toggle_breakpoint() end, desc = "Toggle Breakpoint" }, + { "<leader>dB", function() require("dap").set_breakpoint(vim.fn.input('Breakpoint condition: ')) end, desc = "Breakpoint Condition" }, + { "<leader>dc", function() require("dap").continue() end, desc = "Continue" }, + { "<leader>dC", function() require("dap").run_to_cursor() end, desc = "Run to Cursor" }, + { "<leader>dg", function() require("dap").goto_() end, desc = "Go to line (no execute)" }, + { "<leader>di", function() require("dap").step_into() end, desc = "Step Into" }, + { "<leader>dj", function() require("dap").down() end, desc = "Down" }, + { "<leader>dk", function() require("dap").up() end, desc = "Up" }, + { "<leader>dl", function() require("dap").run_last() end, desc = "Run Last" }, + { "<leader>do", function() require("dap").step_out() end, desc = "Step Out" }, + { "<leader>dO", function() require("dap").step_over() end, desc = "Step Over" }, + { "<leader>dp", function() require("dap").pause() end, desc = "Pause" }, + { "<leader>dr", function() require("dap").repl.toggle() end, desc = "Toggle REPL" }, + { "<leader>ds", function() require("dap").session() end, desc = "Session" }, + { "<leader>dt", function() require("dap").terminate() end, desc = "Terminate" }, + { "<leader>dw", function() require("dap.ui.widgets").hover() end, desc = "Widgets" }, + }, + }, +} + diff --git a/.config/nvim/lua/plugins/dashboard.lua b/.config/nvim/lua/plugins/dashboard.lua new file mode 100644 index 0000000..ab2fc49 --- /dev/null +++ b/.config/nvim/lua/plugins/dashboard.lua @@ -0,0 +1,26 @@ +return { + { + "nvimdev/dashboard-nvim", + dependencies = { "nvim-tree/nvim-web-devicons" }, + event = "VimEnter", + opts = { + config = { + header = { + "", + "███╗ ██╗███████╗ ██████╗ ██╗ ██╗██╗███╗ ███╗", + "████╗ ██║██╔════╝██╔═══██╗██║ ██║██║████╗ ████║", + "██╔██╗ ██║█████╗ ██║ ██║╚██╗ ██╔╝██║██╔████╔██║", + "██║╚██╗██║██╔══╝ ██║ ██║ ╚████╔╝ ██║██║╚██╔╝██║", + "██║ ╚████║███████╗╚██████╔╝ ╚██╔╝ ██║██║ ╚═╝ ██║", + "╚═╝ ╚═══╝╚══════╝ ╚═════╝ ╚═╝ ╚═╝╚═╝ ╚═╝", + "", + }, + shortcut = { + { desc = " New file ", group = "DashboardShortCut", key = "n", action = ":ene" }, + }, + footer = {}, + }, + }, + }, +} + diff --git a/.config/nvim/lua/plugins/editor.lua b/.config/nvim/lua/plugins/editor.lua new file mode 100644 index 0000000..7cc48ea --- /dev/null +++ b/.config/nvim/lua/plugins/editor.lua @@ -0,0 +1,57 @@ +return { + { + "Olical/conjure", + ft = { + "clojure", + "fennel", + "janet", + "racket", + "hy", + "scheme", + "guile", + "commonlisp", + "julia", + "rust", + "lua", + "python", + }, + }, + { "nvimdev/hlsearch.nvim", event = { "BufReadPre", "BufNewFile" }, opts = {} }, + { "folke/todo-comments.nvim", event = { "BufReadPre", "BufNewFile" }, opts = {} }, + { "stevearc/dressing.nvim", event = "VeryLazy", opts = {} }, + { "kylechui/nvim-surround", event = "VeryLazy", opts = {} }, + { "numtostr/comment.nvim", event = "VeryLazy", opts = {} }, + { "folke/neodev.nvim", ft = "lua", opts = {} }, + { + "iamcco/markdown-preview.nvim", + build = "cd app && npm install", + cmd = { "MarkdownPreview", "MarkdownPreviewStop", "MarkdownPreviewToggle" }, + }, + { + "RRethy/vim-illuminate", + event = { "BufReadPre", "BufNewFile" }, + config = function() + require("illuminate").configure({ + providers = { "lsp", "treesitter" }, + }) + vim.api.nvim_set_hl(0, "IlluminatedWordText", { link = "illuminatedWord" }) + vim.api.nvim_set_hl(0, "IlluminatedWordRead", { link = "illuminatedWord" }) + vim.api.nvim_set_hl(0, "IlluminatedWordWrite", { link = "illuminatedWord" }) + end, + }, + { + "echasnovski/mini.ai", + event = "VeryLazy", + config = function() + local ai = require("mini.ai") + ai.setup({ + n_lines = 200, + custom_textobjects = { + F = ai.gen_spec.treesitter({ a = "@function.outer", i = "@function.inner" }), + c = ai.gen_spec.treesitter({ a = "@class.outer", i = "@class.inner" }), + }, + }) + end + }, +} + diff --git a/.config/nvim/lua/plugins/git.lua b/.config/nvim/lua/plugins/git.lua new file mode 100644 index 0000000..d94893d --- /dev/null +++ b/.config/nvim/lua/plugins/git.lua @@ -0,0 +1,92 @@ +return { + { + "sindrets/diffview.nvim", + cmd = { + "DiffviewLog", + "DiffviewOpen", + "DiffviewClose", + "DiffviewRefresh", + "DiffviewFocusFiles", + "DiffviewFileHistory", + "DiffviewToggleFiles", + }, + }, + { + "NeogitOrg/neogit", + dependencies = { + "nvim-lua/plenary.nvim", + "sindrets/diffview.nvim", + }, + cmd = "Neogit", + opts = { + integrations = { + diffview = true, + }, + }, + }, + { + "lewis6991/gitsigns.nvim", + dependencies = { "folke/which-key.nvim" }, + event = { "BufReadPre", "BufNewFile" }, + opts = { + on_attach = function(bufnr) + local gs = require("gitsigns") + local wk = require("which-key") + + wk.register({ + ["]c"] = { + function() + if vim.wo.diff then return "]c" end + vim.schedule(gs.next_hunk) + return "<Ignore>" + end, + "Next hunk", + }, + ["[c"] = { + function() + if vim.wo.diff then return "[c" end + vim.schedule(gs.prev_hunk) + return "<Ignore>" + end, + "Previous hunk", + }, + }, {expr=true}) + + wk.register({ + ["<leader>h"] = { + name = "+Gitsigns", + s = { gs.stage_hunk, "Stage hunk" }, + r = { gs.reset_hunk, "Reset hunk" }, + S = { gs.stage_buffer, "Stage buffer" }, + u = { gs.undo_stage_hunk, "Undo stage hunk" }, + R = { gs.reset_buffer, "Reset buffer" }, + p = { gs.preview_hunk, "Preview hunk" }, + b = { function() gs.blame_line({full=true}) end, "Blame line" }, + B = { gs.toggle_current_line_blame, "Toggle current line blame" }, + d = { gs.diffthis, "Diff current buffer" }, + D = { function() gs.diffthis("~") end, "TODO" }, + x = { gs.toggle_deleted, "Toggle deleted" }, + }, + }) + + wk.register({ + ["<leader>h"] = { + name = "+Gitsigns", + s = { + function() gs.stage_hunk({vim.fn.line("."), vim.fn.line("v")}) end, + "Stage selected lines", + }, + r = { + function() gs.reset_hunk({vim.fn.line("."), vim.fn.line("v")}) end, + "Reset selected lines", + }, + }, + }, {mode="v"}) + + wk.register({ + ["ih"] = { ":<C-U>Gitsigns select_hunk<CR>", "Select hunk" }, + }, {mode={ "o", "x" }}) + end, + }, + }, +} diff --git a/.config/nvim/lua/plugins/indent-blankline.lua b/.config/nvim/lua/plugins/indent-blankline.lua new file mode 100644 index 0000000..b034aed --- /dev/null +++ b/.config/nvim/lua/plugins/indent-blankline.lua @@ -0,0 +1,20 @@ +return { + { + "lukas-reineke/indent-blankline.nvim", + event = { "BufReadPre", "BufNewFile" }, + config = function() + vim.g.indent_blankline_filetype_exclude = { + "alpha", + "fugitive", + "help", + "lazy", + "dashboard", + "NeogitCommitView", + "NeogitConsole", + "NeogitStatus", + "NvimTree", + "TelescopePrompt", + } + end, + }, +} diff --git a/.config/nvim/lua/plugins/leap.lua b/.config/nvim/lua/plugins/leap.lua new file mode 100644 index 0000000..7c755ca --- /dev/null +++ b/.config/nvim/lua/plugins/leap.lua @@ -0,0 +1,18 @@ +return { + { + "ggandor/leap.nvim", + keys = { "s", "S" }, + config = function() + require("leap").add_default_mappings() + end + }, + { + "ggandor/flit.nvim", + dependencies = { "ggandor/leap.nvim" }, + keys = { "f", "F", "t", "T" }, + opts = { + labeled_modes = "nvx", + }, + }, +} + diff --git a/.config/nvim/lua/plugins/lsp.lua b/.config/nvim/lua/plugins/lsp.lua new file mode 100644 index 0000000..cb4511d --- /dev/null +++ b/.config/nvim/lua/plugins/lsp.lua @@ -0,0 +1,78 @@ +return { + { + "neovim/nvim-lspconfig", + dependencies = { + "hrsh7th/cmp-nvim-lsp", + "jose-elias-alvarez/null-ls.nvim", + }, + event = { "BufReadPre", "BufNewFile" }, + config = function() + local lspconfig = require("lspconfig") + local capabilities = require("cmp_nvim_lsp").default_capabilities() + local common = { + capabilities = capabilities, + } + + local lsps = { + "rust_analyzer", + "gopls", + "lua_ls", + "pylsp", + } + + for _, lsp in ipairs(lsps) do + lspconfig[lsp].setup(common) + end + + local wk = require("which-key") + wk.register({ + ["<leader>q"] = { vim.diagnostic.open_float, "Show diagnostics in a floating window" }, + ["[d"] = { vim.diagnostic.goto_prev, "Previous diagnostic" }, + ["]d"] = { vim.diagnostic.goto_next, "Next diagnostic" }, + }) + + vim.api.nvim_create_autocmd("LspAttach", { + group = vim.api.nvim_create_augroup("UserLspConfig", {}), + callback = function(ev) + wk.register({ + gD = { vim.lsp.buf.declaration, "Go to declaration" }, + gd = { vim.lsp.buf.definition, "Go to definition" }, + gr = { vim.lsp.buf.references, "Go to references" }, + gi = { vim.lsp.buf.implementation, "Go to implementation" }, + K = { vim.lsp.buf.hover, "Show LSP hover info" }, + ["<C-k>"] = { vim.lsp.buf.signature_help, "Show signature help" }, + ["<leader>D"] = { vim.lsp.buf.type_definition, "Type definition" }, + ["<leader>rn"] = { vim.lsp.buf.rename, "Rename" }, + ["<leader>ca"] = { vim.lsp.buf.code_action, "Code action" }, + ["<leader>F"] = { + function() + vim.lsp.buf.format({ async = true }) + end, + "Format buffer", + }, + ["<leader>w"] = { + name = "+LSP workspace", + a = { vim.lsp.buf.add_workspace_folder, "Add workspace folder" }, + r = { vim.lsp.buf.remove_workspace_folder, "Remove workspace folder" }, + l = { + function() + print(vim.inspect(vim.lsp.buf.list_workspace_folders())) + end, + "List workspace folders", + }, + }, + }, {buffer=ev.buf}) + end, + }) + + local nls = require("null-ls") + nls.setup({ + sources = { + nls.builtins.formatting.stylua, + nls.builtins.formatting.shfmt, + nls.builtins.code_actions.gitsigns, + }, + }) + end, + }, +} diff --git a/.config/nvim/lua/plugins/lualine.lua b/.config/nvim/lua/plugins/lualine.lua new file mode 100644 index 0000000..21881b9 --- /dev/null +++ b/.config/nvim/lua/plugins/lualine.lua @@ -0,0 +1,11 @@ +return { + { + "nvim-lualine/lualine.nvim", + dependencies = { "nvim-tree/nvim-web-devicons" }, + opts = { + options = { + theme = "catppuccin", + }, + }, + }, +} diff --git a/.config/nvim/lua/plugins/neotest.lua b/.config/nvim/lua/plugins/neotest.lua new file mode 100644 index 0000000..74817a5 --- /dev/null +++ b/.config/nvim/lua/plugins/neotest.lua @@ -0,0 +1,33 @@ +return { + { + "nvim-neotest/neotest", + dependencies = { + "nvim-lua/plenary.nvim", + "nvim-treesitter/nvim-treesitter", + "antoinemadec/FixCursorHold.nvim", + + "nvim-neotest/neotest-python", + }, + keys = { + { "<leader>tt", function() require("neotest").run.run(vim.fn.expand("%")) end, desc = "Run buffer" }, + { "<leader>tT", function() require("neotest").run.run(vim.loop.cwd()) end, desc = "Run all files" }, + { "<leader>tr", function() require("neotest").run.run() end, desc = "Run nearest test" }, + { "<leader>td", function() require("neotest").run.run({strategy="dap"}) end, desc = "Debug nearest test" }, + { "<leader>ts", function() require("neotest").summary.toggle() end, desc = "Toggle summary" }, + { "<leader>to", function() require("neotest").output.open({enter=true, auto_close=true}) end, desc = "Show output" }, + { "<leader>tO", function() require("neotest").output_panel.toggle() end, desc = "Toggle output panel" }, + { "<leader>tS", function() require("neotest").run.stop() end, desc = "Stop" }, + { "<leader>twt", function() require("neotest").watch.watch(vim.fn.expand("%")) end, desc = "Watch buffer" }, + { "<leader>twT", function() require("neotest").watch.watch(vim.loop.cwd()) end, desc = "Watch all files" }, + { "<leader>twr", function() require("neotest").watch.watch() end, desc = "Watch nearest test" }, + { "<leader>tws", function() require("neotest").watch.stop() end, desc = "Stop watching" }, + }, + config = function() + require("neotest").setup({ + adapters = { + require("neotest-python"), + }, + }) + end, + }, +} diff --git a/.config/nvim/lua/plugins/notify.lua b/.config/nvim/lua/plugins/notify.lua new file mode 100644 index 0000000..68941bb --- /dev/null +++ b/.config/nvim/lua/plugins/notify.lua @@ -0,0 +1,19 @@ +return { + { + "rcarriga/nvim-notify", + event = "VeryLazy", + config = function() + vim.notify = require("notify") + end, + }, + { + "nvim-telescope/telescope.nvim", + dependencies = { "rcarriga/nvim-notify" }, + keys = { + { "<leader>fn", "<cmd>Telescope notify<cr>", desc = "Notifications" }, + }, + config = function() + require("telescope").load_extension("notify") + end, + }, +} diff --git a/.config/nvim/lua/plugins/rainbow-delimiters.lua b/.config/nvim/lua/plugins/rainbow-delimiters.lua new file mode 100644 index 0000000..feddc53 --- /dev/null +++ b/.config/nvim/lua/plugins/rainbow-delimiters.lua @@ -0,0 +1,26 @@ +return { + { + "HiPhish/rainbow-delimiters.nvim", + event = { "BufReadPre", "BufNewFile" }, + config = function() + vim.g.rainbow_delimiters = { + strategy = { + [""] = require("rainbow-delimiters").strategy["global"], + }, + query = { + [""] = "rainbow-delimiters", + lua = "rainbow-blocks", + }, + highlight = { + "TSRainbowRed", + "TSRainbowYellow", + "TSRainbowBlue", + "TSRainbowOrange", + "TSRainbowGreen", + "TSRainbowViolet", + "TSRainbowCyan", + }, + } + end, + }, +} diff --git a/.config/nvim/lua/plugins/spectre.lua b/.config/nvim/lua/plugins/spectre.lua new file mode 100644 index 0000000..6b4b50f --- /dev/null +++ b/.config/nvim/lua/plugins/spectre.lua @@ -0,0 +1,13 @@ +return { + { + "nvim-pack/nvim-spectre", + dependencies = { "nvim-lua/plenary.nvim" }, + keys = { + { "<leader>S", function() require("spectre").open() end, desc = "Open Spectre" }, + { "<leader>sw", function() require("spectre").open_visual({select_word=true}) end, desc = "Search current word" }, + { "<leader>sw", function() require("spectre").open_visual() end, desc = "Search current word", mode = "v" }, + { "<leader>sp", function() require("spectre").open_file_search({select_word=true}) end, desc = "Search on current file" }, + }, + opts = {}, + }, +} diff --git a/.config/nvim/lua/plugins/telescope.lua b/.config/nvim/lua/plugins/telescope.lua new file mode 100644 index 0000000..2353209 --- /dev/null +++ b/.config/nvim/lua/plugins/telescope.lua @@ -0,0 +1,31 @@ +return { + { + "nvim-telescope/telescope.nvim", + dependencies = { + "nvim-lua/plenary.nvim", + "nvim-tree/nvim-web-devicons", + }, + keys = { + { "<leader>fF", "<cmd>Telescope find_files<cr>", desc = "Find files" }, + { "<leader>ff", "<cmd>Telescope git_files<cr>", desc = "Find git files" }, + { "<leader>fg", "<cmd>Telescope live_grep<cr>", desc = "Live grep" }, + { "<leader>fb", "<cmd>Telescope buffers<cr>", desc = "Buffers" }, + { "<leader>fh", "<cmd>Telescope help_tags<cr>", desc = "Help tags" }, + }, + cmd = "Telescope", + }, + { + "nvim-telescope/telescope-file-browser.nvim", + dependencies = { + "nvim-telescope/telescope.nvim", + "nvim-lua/plenary.nvim", + }, + keys = { + { "<leader>fd", "<cmd>Telescope file_browser<cr>", desc = "File browser" }, + }, + cmd = "Telescope file_browser", + config = function() + require("telescope").load_extension("file_browser") + end, + }, +} diff --git a/.config/nvim/lua/plugins/terminal.lua b/.config/nvim/lua/plugins/terminal.lua new file mode 100644 index 0000000..ee7f8ae --- /dev/null +++ b/.config/nvim/lua/plugins/terminal.lua @@ -0,0 +1,12 @@ +return { + { + "akinsho/toggleterm.nvim", + keys = "<C-t>", + opts = { + open_mapping = "<C-t>", + shade_terminals = false, + direction = "vertical", + size = function() return vim.o.columns * 0.45 end, + }, + }, +} diff --git a/.config/nvim/lua/plugins/treesitter.lua b/.config/nvim/lua/plugins/treesitter.lua new file mode 100644 index 0000000..ba45ada --- /dev/null +++ b/.config/nvim/lua/plugins/treesitter.lua @@ -0,0 +1,33 @@ +return { + { + "nvim-treesitter/nvim-treesitter", + dependencies = { "nvim-treesitter/nvim-treesitter-textobjects" }, + event = { "BufReadPre", "BufNewFile" }, + config = function() + require("nvim-treesitter.configs").setup({ + auto_install = true, + ensure_installed = { + "lua", + "python", + "rust", + "bash", + "regex", + "json", + "toml", + "yaml", + "ini", + "markdown", + "html", + "css", + "javascript", + "typescript", + "tsx", + "scss", + "clojure", + "sql", + }, + highlight = { enable = true }, + }) + end, + }, +} diff --git a/.config/nvim/lua/plugins/trouble.lua b/.config/nvim/lua/plugins/trouble.lua new file mode 100644 index 0000000..6678356 --- /dev/null +++ b/.config/nvim/lua/plugins/trouble.lua @@ -0,0 +1,15 @@ +return { + { + "folke/trouble.nvim", + dependencies = { "nvim-tree/nvim-web-devicons" }, + keys = { + { "<leader>xx", "<Cmd>TroubleToggle<CR>", desc = "Toggle trouble", silent = true }, + { "<leader>xw", "<Cmd>TroubleToggle workspace_diagnostics<CR>", desc = "Toggle workspace diagnostics", silent = true }, + { "<leader>xd", "<Cmd>TroubleToggle document_diagnostics<CR>", desc = "Toggle document diagnostics", silent = true }, + { "<leader>xl", "<Cmd>TroubleToggle loclist<CR>", desc = "Toggle loclist", silent = true }, + { "<leader>xq", "<Cmd>TroubleToggle quickfix<CR>", desc = "Toggle quickfix list", silent = true }, + { "gR", "<Cmd>TroubleToggle lsp_references<CR>", desc = "Toggle LSP reference list", silent = true }, + }, + opts = {}, + }, +} diff --git a/.config/nvim/lua/plugins/which-key.lua b/.config/nvim/lua/plugins/which-key.lua new file mode 100644 index 0000000..104d728 --- /dev/null +++ b/.config/nvim/lua/plugins/which-key.lua @@ -0,0 +1,16 @@ +return { + "folke/which-key.nvim", + event = "VeryLazy", + config = function() + require("which-key").register({ + ["<leader>t"] = { + name = "+test", + w = { name = "+watch" }, + }, + ["<leader>f"] = { name = "+Telescope" }, + ["<leader>d"] = { name = "+debug" }, + ["<leader>s"] = { name = "+Spectre" }, + ["<leader>x"] = { name = "+Trouble" }, + }) + end, +} diff --git a/.config/nvim/lua/plugins/yanky.lua b/.config/nvim/lua/plugins/yanky.lua new file mode 100644 index 0000000..be90ccf --- /dev/null +++ b/.config/nvim/lua/plugins/yanky.lua @@ -0,0 +1,26 @@ +return { + { + "gbprod/yanky.nvim", + keys = { + { "p", "<Plug>(YankyPutAfter)", desc = "Put after cursor", mode = { "n", "x" } }, + { "P", "<Plug>(YankyPutBefore)", desc = "Put before cursor", mode = { "n", "x" } }, + { "gp", "<Plug>(YankyGPutAfter)", desc = "Put after cursor", mode = { "n", "x" } }, + { "gP", "<Plug>(YankyGPutBefore)", desc = "Put before cursor", mode = { "n", "x" } }, + { "<C-n>", "<Plug>(YankyCycleForward)", desc = "Next yank" }, + { "<C-p>", "<Plug>(YankyCycleBackward)", desc = "Previous yank" }, + }, + opts = {}, + }, + { + "nvim-telescope/telescope.nvim", + dependencies = { "gbprod/yanky.nvim" }, + keys = { + { "<leader>fy", "<cmd>Telescope yank_history<cr>", desc = "Yank history" }, + }, + cmd = "Telescope yank_history", + config = function() + require("telescope").load_extension("yank_history") + end, + }, +} + |
