-- ~/.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" }, opts = { enabled = true, execution_message = { enabled = false, }, trigger_events = { immediate_save = { "BufLeave", "FocusLost" }, defer_save = { "InsertLeave", "TextChanged" }, cancel_defered_save = { "InsertEnter" }, }, }, }, -- File explorer { import = "plugins.nvim-tree" }, -- Treesitter { import = "plugins.treesitter" }, -- Rainbow delimiters { import = "plugins.rainbow_delimiters" }, -- Git integration { "lewis6991/gitsigns.nvim", 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" }, -- Status line { import = "plugins.lualine" }, -- FZF { "junegunn/fzf", build = function() vim.fn["fzf#install"]() end, }, { "junegunn/fzf.vim" }, -- Productivity { "numToStr/Comment.nvim", opts = {} }, { "windwp/nvim-autopairs", opts = {} }, { "tpope/vim-surround" }, -- 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 = "", }, }, }, -- Leap (motion) { "ggandor/leap.nvim", event = "VeryLazy", config = function() require('leap').add_default_mappings() -- Override default s/S with f/F to avoid conflict with surround vim.keymap.del({'n', 'x', 'o'}, 's') vim.keymap.del({'n', 'x', 'o'}, 'S') vim.keymap.set({'n', 'x', 'o'}, 'f', '(leap-forward)') vim.keymap.set({'n', 'x', 'o'}, 'F', '(leap-backward)') end, }, -- Markdown { "SidOfc/mkdx" }, { "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', }, }, }) -- Set highlights after ColorScheme event to ensure they persist vim.api.nvim_create_autocmd("ColorScheme", { callback = function() -- Translucent heading backgrounds with alpha blending vim.api.nvim_set_hl(0, 'RenderMarkdownH1Bg', { bg = '#2d5a7b', fg = 'NONE' }) vim.api.nvim_set_hl(0, 'RenderMarkdownH2Bg', { bg = '#3d5f4e', fg = 'NONE' }) vim.api.nvim_set_hl(0, 'RenderMarkdownH3Bg', { bg = '#5f5e3a', fg = 'NONE' }) vim.api.nvim_set_hl(0, 'RenderMarkdownH4Bg', { bg = '#5f4a3e', fg = 'NONE' }) vim.api.nvim_set_hl(0, 'RenderMarkdownH5Bg', { bg = '#4e4a5f', fg = 'NONE' }) vim.api.nvim_set_hl(0, 'RenderMarkdownH6Bg', { bg = '#4a5e5f', fg = 'NONE' }) -- Bold, colored heading text vim.api.nvim_set_hl(0, 'RenderMarkdownH1', { fg = '#88c0d0', bold = true }) vim.api.nvim_set_hl(0, 'RenderMarkdownH2', { fg = '#a3be8c', bold = true }) vim.api.nvim_set_hl(0, 'RenderMarkdownH3', { fg = '#ebcb8b', bold = true }) vim.api.nvim_set_hl(0, 'RenderMarkdownH4', { fg = '#d08770', bold = true }) vim.api.nvim_set_hl(0, 'RenderMarkdownH5', { fg = '#b48ead', bold = true }) vim.api.nvim_set_hl(0, 'RenderMarkdownH6', { fg = '#8fbcbb', bold = true }) end, }) -- Apply highlights immediately vim.schedule(function() vim.cmd('doautocmd ColorScheme') end) 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", 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, }, }