-- ~/.config/nvim/lua/plugins/init.lua return { -- Colorschemes { "gruvbox-community/gruvbox", priority = 1000 }, { "folke/tokyonight.nvim", priority = 1000 }, { "catppuccin/nvim", name = "catppuccin", priority = 1000 }, { "EdenEast/nightfox.nvim", priority = 1000 }, { "rose-pine/neovim", name = "rose-pine", priority = 1000 }, { "rebelot/kanagawa.nvim", priority = 1000 }, { "sainnhe/everforest", priority = 1000 }, -- Auto-save { "okuuva/auto-save.nvim", version = "v1.*", event = { "InsertLeave", "TextChanged" }, init = function() local group = vim.api.nvim_create_augroup("autosave_message", { clear = true }) vim.api.nvim_create_autocmd("User", { pattern = "AutoSaveWritePost", group = group, callback = function(opts) local saved_buffer = opts.data and opts.data.saved_buffer if not saved_buffer then return end local filename = vim.fn.fnamemodify(vim.api.nvim_buf_get_name(saved_buffer), ":t") if filename == "" then filename = "[No Name]" end vim.notify("AutoSave: " .. filename, vim.log.levels.INFO, { title = "auto-save.nvim" }) end, }) end, opts = { enabled = true, trigger_events = { immediate_save = { "BufLeave", "FocusLost" }, defer_save = { "InsertLeave", "TextChanged" }, cancel_deferred_save = { "InsertEnter" }, }, }, }, -- File explorer { import = "plugins.nvim-tree" }, -- Treesitter { import = "plugins.treesitter" }, -- Rainbow delimiters { import = "plugins.rainbow_delimiters" }, -- Git integration { "lewis6991/gitsigns.nvim", event = { "BufReadPre", "BufNewFile" }, opts = { signs = { add = { text = "│" }, change = { text = "│" }, delete = { text = "_" }, topdelete = { text = "‾" }, changedelete = { text = "~" }, untracked = { text = "┆" }, }, signcolumn = false, -- Disable signs by default numhl = false, -- Disable number highlights by default linehl = false, -- Disable line highlights by default word_diff = false, current_line_blame = false, } }, { "tpope/vim-fugitive", cmd = { "Git", "Gvdiffsplit" }, }, { "kdheepak/lazygit.nvim", dependencies = { "nvim-lua/plenary.nvim" }, cmd = { "LazyGit", "LazyGitConfig", "LazyGitCurrentFile", "LazyGitFilter", "LazyGitFilterCurrentFile", }, keys = { { "gg", "LazyGit", desc = "LazyGit" }, }, }, -- Status line { import = "plugins.lualine" }, -- Tmux statusline generator (run :TmuxlineSnapshot ~/.config/tmux/themes/tmuxline.tmux) { "edkolev/tmuxline.vim", cmd = { "Tmuxline", "TmuxlineSnapshot" }, config = function() vim.g.tmuxline_separators = { left = "", left_alt = "", right = "", right_alt = "", space = " ", } vim.g.tmuxline_preset = { a = "#S", win = "#I #W", cwin = "#I #W", y = "%H:%M", z = "%d %b", } end, }, -- FZF { "junegunn/fzf", build = function() vim.fn["fzf#install"]() end, }, { "junegunn/fzf.vim" }, -- Productivity { "numToStr/Comment.nvim", event = "VeryLazy", opts = {} }, { "windwp/nvim-autopairs", event = "InsertEnter", opts = {} }, { "tpope/vim-surround", event = "VeryLazy" }, -- -- Tmux navigation -- { "christoomey/vim-tmux-navigator" }, -- LaTeX { import = "plugins.vimtex" }, -- Org-mode { "nvim-orgmode/orgmode", dependencies = { "nvim-treesitter/nvim-treesitter" }, opts = {}, }, -- Telescope { "nvim-telescope/telescope.nvim", dependencies = { "nvim-lua/plenary.nvim" }, keys = { { "ff", ":Telescope find_files", desc = "Find files" }, { "fg", ":Telescope live_grep", desc = "Live grep" }, { "fb", ":Telescope buffers", desc = "Buffers" }, { "fh", ":Telescope help_tags", desc = "Help tags" }, }, }, -- Yazi file manager { "mikavilpas/yazi.nvim", keys = { { "y", ":Yazi", desc = "Open Yazi" }, }, opts = { open_for_directories = false, keymaps = { show_help = "", }, }, }, -- Markdown { "SidOfc/mkdx", ft = "markdown" }, { "MeanderingProgrammer/render-markdown.nvim", dependencies = { "nvim-treesitter/nvim-treesitter", "echasnovski/mini.icons" }, ft = { "markdown", "norg", "rmd", "org" }, config = function() require('render-markdown').setup({ heading = { enabled = true, sign = true, position = 'overlay', icons = { '󰲡 ', '󰲣 ', '󰲥 ', '󰲧 ', '󰲩 ', '󰲫 ' }, backgrounds = { 'RenderMarkdownH1Bg', 'RenderMarkdownH2Bg', 'RenderMarkdownH3Bg', 'RenderMarkdownH4Bg', 'RenderMarkdownH5Bg', 'RenderMarkdownH6Bg', }, foregrounds = { 'RenderMarkdownH1', 'RenderMarkdownH2', 'RenderMarkdownH3', 'RenderMarkdownH4', 'RenderMarkdownH5', 'RenderMarkdownH6', }, }, }) end, }, -- Code formatting { import = "plugins.prettier" }, -- Copilot { "zbirenbaum/copilot.lua", event = "InsertEnter", opts = { suggestion = { enabled = true }, panel = { enabled = true }, }, }, -- Indent guides { "lukas-reineke/indent-blankline.nvim", main = "ibl", event = { "BufReadPost", "BufNewFile" }, opts = {}, }, -- UFO (folding) { "kevinhwang91/nvim-ufo", dependencies = { "kevinhwang91/promise-async" }, event = "BufReadPost", config = function() vim.o.foldcolumn = "0" vim.o.foldlevel = 99 vim.o.foldlevelstart = 99 vim.o.foldenable = true require("ufo").setup({ provider_selector = function(bufnr, filetype, buftype) -- Disable for latex and markdown files if filetype == "tex" or filetype == "latex" or filetype == "markdown" then return "" end return { "treesitter", "indent" } end, }) end, }, }