return { -- Themes { 'EdenEast/nightfox.nvim', lazy = false, priority = 1000, }, -- LSP 'williamboman/mason.nvim', 'williamboman/mason-lspconfig.nvim', 'neovim/nvim-lspconfig', { 'nvimdev/lspsaga.nvim', config = function() require('lspsaga').setup({ lightbulb = { enable = true, sign = true, virtual_text = false, }, }) end, dependencies = { 'nvim-treesitter/nvim-treesitter', 'nvim-tree/nvim-web-devicons' }, }, { "zbirenbaum/copilot.lua", cmd = "Copilot", event = "InsertEnter", config = function() require("copilot").setup({ panel = { enabled = true, auto_refresh = true, }, suggestion = { enabled = true, auto_trigger = true, accept = false, -- disable built-in keymapping }, filetypes = { markdown = true, yaml = true } }) end, }, 'hrsh7th/nvim-cmp', 'hrsh7th/cmp-nvim-lsp', 'hrsh7th/cmp-nvim-lua', 'hrsh7th/cmp-nvim-lsp-signature-help', 'hrsh7th/cmp-vsnip', 'hrsh7th/cmp-path', 'hrsh7th/cmp-buffer', 'hrsh7th/vim-vsnip', { 'nvim-lualine/lualine.nvim', dependencies = { 'nvim-tree/nvim-web-devicons' }, config = function() require('lualine').setup { options = { icons_enabled = true, theme = 'auto', component_separators = { left = '', right = '' }, section_separators = { left = '', right = '' }, disabled_filetypes = { statusline = {}, winbar = {}, 'sagaoutline', 'neo-tree' }, ignore_focus = {}, always_divide_middle = false, globalstatus = false, refresh = { statusline = 1000, tabline = 1000, winbar = 1000, } }, tabline = {}, winbar = {}, inactive_winbar = {}, extensions = {}, } end }, { "nvim-neo-tree/neo-tree.nvim", branch = "v3.x", dependencies = { "nvim-lua/plenary.nvim", "nvim-tree/nvim-web-devicons", -- not strictly required, but recommended "MunifTanjim/nui.nvim", -- "3rd/image.nvim", -- Optional image support in preview window: See `# Preview Mode` for more information } }, 'nvim-tree/nvim-web-devicons', { 'norcalli/nvim-colorizer.lua', config = function() require('colorizer').setup() end }, 'navarasu/onedark.nvim', { -- Hides the highlight after searching and going into insert mode 'nvimdev/hlsearch.nvim', event = { "BufRead" }, config = function() require('hlsearch').setup() end }, { 'nvim-pack/nvim-spectre' }, { 'fedepujol/move.nvim', config = function() require('move').setup({ require('move').setup({ line = { enable = true, -- Enables line movement indent = true -- Toggles indentation }, block = { enable = true, -- Enables block movement indent = true -- Toggles indentation }, word = { enable = true, -- Enables word movement }, char = { enable = true -- Enables char movement } }) }) end }, { 'smoka7/hop.nvim', version = "*", opts = {}, }, { "cbochs/grapple.nvim", dependencies = { { "nvim-tree/nvim-web-devicons", lazy = true } }, opts = { scope = "git", -- also try out "git_branch" }, event = { "BufReadPost", "BufNewFile" }, cmd = "Grapple", keys = { { "M", "Grapple toggle", desc = "Grapple toggle tag" }, { "m", "Grapple toggle_tags", desc = "Grapple open tags window" }, { "n", "Grapple cycle_tags next", desc = "Grapple cycle next tag" }, { "N", "Grapple cycle_tags prev", desc = "Grapple cycle previous tag" }, }, }, { "leath-dub/snipe.nvim", keys = { { "gb", function() require("snipe").open_buffer_menu() end, desc = "Open Snipe buffer menu" } }, opts = {} }, -- Language suites { 'mrcjkb/rustaceanvim', version = '^4', -- Recommended lazy = false, -- This plugin is already lazy }, { 'nvim-java/nvim-java', dependencies = { 'nvim-java/lua-async-await', 'nvim-java/nvim-java-refactor', 'nvim-java/nvim-java-core', 'nvim-java/nvim-java-test', 'nvim-java/nvim-java-dap', 'MunifTanjim/nui.nvim', 'neovim/nvim-lspconfig', 'mfussenegger/nvim-dap', { 'williamboman/mason.nvim', opts = { registries = { 'github:nvim-java/mason-registry', 'github:mason-org/mason-registry', }, }, } }, config = function() require('java').setup() end, }, { "ray-x/go.nvim", dependencies = { -- optional packages "ray-x/guihua.lua", "neovim/nvim-lspconfig", "nvim-treesitter/nvim-treesitter", }, config = function() require("go").setup() end, event = { "CmdlineEnter" }, ft = { "go", 'gomod' }, build = ':lua require("go.install").update_all_sync()' -- if you need to install/update all binaries }, { "ellisonleao/glow.nvim", config = function() require("glow").setup() end }, { 'numToStr/Comment.nvim', }, { "jubnzv/mdeval.nvim", config = function() require 'mdeval'.setup({ require_confirmation = false, eval_options = { -- Set custom configuration for C++ cpp = { command = { "clang++", "-std=c++20", "-O0" }, default_header = [[ #include #include using namespace std; ]] }, }, }) end }, { "michaelb/sniprun", branch = "master", build = "sh install.sh", config = function() require("sniprun").setup({ -- your options }) end, }, { "jellydn/hurl.nvim", dependencies = { "MunifTanjim/nui.nvim", "nvim-lua/plenary.nvim", "nvim-treesitter/nvim-treesitter" }, ft = "hurl", opts = { -- Show debugging info debug = false, -- Show notification on run show_notification = false, -- Show response in popup or split mode = "split", -- Default formatter formatters = { json = { 'jq' }, -- Make sure you have install jq in your system, e.g: brew install jq html = { 'prettier', -- Make sure you have install prettier in your system, e.g: npm install -g prettier '--parser', 'html', }, }, }, }, { "LintaoAmons/scratch.nvim", opts = { scratch_file_dir = vim.fn.stdpath("cache") .. "/scratch.nvim", filetypes = { "lua", "js", "bash", "sh", "py", "md" }, filetype_details = { json = {}, ["yaml"] = {}, go = { requireDir = true, filename = "main", content = { "package main", "", "func main() {", " ", "}" }, cursor = { location = { 4, 2 }, insert_mode = true, }, }, }, window_cmd = "edit", use_telescope = true, localKeys = { { filenameContains = { "sh" }, LocalKeys = { { cmd = "RunShellCurrentLine", key = "", modes = { "n", "i", "v" }, }, }, }, }, }, event = "VeryLazy", }, { 'saadparwaiz1/cmp_luasnip' }, { "L3MON4D3/LuaSnip", version = "v2.*", run = "make install_jsregexp" }, { 'nvim-lua/plenary.nvim' }, { 'nvim-telescope/telescope.nvim', config = function() local tl = require('telescope') tl.load_extension("file_browser") tl.setup { pickers = { find_files = { theme = "dropdown", hidden = true, }, }, buffers = { show_all_buffers = true, sort_lastused = true, theme = "dropdown", previewer = false, mappings = { i = { [""] = "delete_buffer", }, n = { [""] = "delete_buffer", }, }, } } end }, { 'LukasPietzschmann/telescope-tabs', requires = { 'nvim-telescope/telescope.nvim' }, config = function() require 'telescope-tabs'.setup { -- Your custom config :^) } end }, { "nvim-telescope/telescope-file-browser.nvim", dependencies = { "nvim-telescope/telescope.nvim", "nvim-lua/plenary.nvim" } }, { "ThePrimeagen/refactoring.nvim", requires = { { "nvim-lua/plenary.nvim" }, { "nvim-treesitter/nvim-treesitter" }, }, }, { "NeogitOrg/neogit", dependencies = { "nvim-lua/plenary.nvim", "nvim-telescope/telescope.nvim", "sindrets/diffview.nvim", }, config = true }, { 'mg979/vim-visual-multi' }, { 'rhysd/git-messenger.vim' }, { 'sindrets/diffview.nvim' }, { 'nvimdev/dashboard-nvim', event = 'VimEnter', config = function() require('dashboard').setup { -- config } end, dependencies = { { 'nvim-tree/nvim-web-devicons' } } }, { 'kevinhwang91/nvim-ufo', dependencies = 'kevinhwang91/promise-async', config = function() require('ufo').setup({ provider_selector = function(bufnr, filetype, buftype) return { 'treesitter', 'indent' } end }) end }, { 'stevearc/oil.nvim', opts = {}, -- Optional dependencies dependencies = { "nvim-tree/nvim-web-devicons" }, }, -- Treesitter { "nvim-treesitter/nvim-treesitter", build = ":TSUpdate", }, { "nvim-treesitter/nvim-treesitter-textobjects", after = "nvim-treesitter", requires = "nvim-treesitter/nvim-treesitter", }, { "nvim-treesitter/nvim-treesitter-context", }, { -- Press % to jump to the other side of a block 'yorickpeterse/nvim-tree-pairs', config = function() require('tree-pairs').setup() end }, { 'Wansmer/treesj', dependencies = { 'nvim-treesitter/nvim-treesitter' }, config = function() require('treesj').setup({ --[[ your config ]] }) end, }, { -- NOTE: Fuzzy search for commands -- Execute :Telescope commands "LintaoAmons/easy-commands.nvim", event = "VeryLazy", }, { "LintaoAmons/bookmarks.nvim", dependencies = { { "nvim-telescope/telescope.nvim" }, { "stevearc/dressing.nvim" } -- optional: to have the same UI shown in the GIF } }, { "folke/noice.nvim", dependencies = { "MunifTanjim/nui.nvim", "rcarriga/nvim-notify", }, }, { "folke/todo-comments.nvim", dependencies = { "nvim-lua/plenary.nvim" }, opts = { -- your configuration comes here -- or leave it empty to use the default settings -- refer to the configuration section below } }, { "folke/trouble.nvim", dependencies = { "nvim-tree/nvim-web-devicons" }, opts = { -- your configuration comes here -- or leave it empty to use the default settings -- refer to the configuration section below }, }, 'jiangmiao/auto-pairs', { 'RRethy/vim-illuminate', config = function() -- default configuration require('illuminate').configure({ -- providers: provider used to get references in the buffer, ordered by priority providers = { 'lsp', 'treesitter', 'regex', }, delay = 100, filetype_overrides = {}, filetypes_denylist = { 'dirbuf', 'dirvish', 'fugitive', }, filetypes_allowlist = {}, modes_denylist = {}, modes_allowlist = {}, providers_regex_syntax_denylist = {}, providers_regex_syntax_allowlist = {}, under_cursor = true, large_file_cutoff = nil, large_file_overrides = nil, min_count_to_highlight = 1, should_enable = function(bufnr) return true end, case_insensitive_regex = false, }) end }, { 'luochen1990/rainbow' }, { "lukas-reineke/indent-blankline.nvim", main = "ibl", opts = {}, config = function() local highlight = { "RainbowRed", "RainbowYellow", "RainbowBlue", "RainbowOrange", "RainbowGreen", "RainbowViolet", "RainbowCyan", } local hooks = require "ibl.hooks" -- create the highlight groups in the highlight setup hook, so they are reset -- every time the colorscheme changes hooks.register(hooks.type.HIGHLIGHT_SETUP, function() vim.api.nvim_set_hl(0, "RainbowRed", { fg = "#E06C75" }) vim.api.nvim_set_hl(0, "RainbowYellow", { fg = "#E5C07B" }) vim.api.nvim_set_hl(0, "RainbowBlue", { fg = "#61AFEF" }) vim.api.nvim_set_hl(0, "RainbowOrange", { fg = "#D19A66" }) vim.api.nvim_set_hl(0, "RainbowGreen", { fg = "#98C379" }) vim.api.nvim_set_hl(0, "RainbowViolet", { fg = "#C678DD" }) vim.api.nvim_set_hl(0, "RainbowCyan", { fg = "#56B6C2" }) end) require("ibl").setup { indent = { highlight = highlight } } end }, { "kylechui/nvim-surround", version = "*", -- Use for stability; omit to use `main` branch for the latest features event = "VeryLazy", config = function() require("nvim-surround").setup({ -- Configuration here, or leave empty to use defaults }) end }, { 'nmac427/guess-indent.nvim', config = function() require('guess-indent').setup() end }, { "folke/which-key.nvim", event = "VeryLazy", init = function() vim.o.timeout = true vim.o.timeoutlen = 300 end, opts = { -- your configuration comes here -- or leave it empty to use the default settings -- refer to the configuration section below } }, { 'folke/neodev.nvim', config = function() require('neodev').setup {} end }, { 'vladdoster/remember.nvim', config = [[ require('remember') ]] }, { -- Adds git related signs to the gutter, as well as utilities for managing changes 'lewis6991/gitsigns.nvim', opts = { -- See `:help gitsigns.txt` signs = { add = { text = '+' }, change = { text = '~' }, delete = { text = '_' }, topdelete = { text = '‾' }, changedelete = { text = '~' }, }, current_line_blame = true, on_attach = function(bufnr) vim.keymap.set('n', 'hp', require('gitsigns').preview_hunk, { buffer = bufnr, desc = 'Preview git hunk' }) -- don't override the built-in and fugitive keymaps local gs = package.loaded.gitsigns vim.keymap.set({ 'n', 'v' }, ']c', function() if vim.wo.diff then return ']c' end vim.schedule(function() gs.next_hunk() end) return '' end, { expr = true, buffer = bufnr, desc = 'Jump to next hunk' }) vim.keymap.set({ 'n', 'v' }, '[c', function() if vim.wo.diff then return '[c' end vim.schedule(function() gs.prev_hunk() end) return '' end, { expr = true, buffer = bufnr, desc = 'Jump to previous hunk' }) end, }, }, { "FabijanZulj/blame.nvim", config = function() require("blame").setup({ date_format = "%m/%d/%Y", }) end }, { "ahmedkhalf/project.nvim", config = function() require("project_nvim").setup { -- your configuration comes here -- or leave it empty to use the default settings -- refer to the configuration section below } end }, { 'stevearc/conform.nvim', opts = {}, config = function() require("conform").setup({ formatters_by_ft = { lua = { "stylua" }, -- Conform will run multiple formatters sequentially python = { "isort", "black" }, -- Use a sub-list to run only the first available formatter javascript = { { "prettierd", "prettier" } }, }, }) end }, { 'rmagatti/auto-session', config = function() require("auto-session").setup { log_level = "error", auto_session_suppress_dirs = { "~/", "~/Projects", "~/Downloads", "/" }, } end }, { 'akinsho/toggleterm.nvim', version = "*", config = true }, { "epwalsh/obsidian.nvim", version = "*", -- lazy = true, -- ft = "markdown", dependencies = { "nvim-lua/plenary.nvim", }, opts = { workspaces = { { name = "personal", path = "~/Obsidian/notes/", }, }, }, }, { 'MeanderingProgrammer/render-markdown.nvim', opts = {}, dependencies = { 'nvim-treesitter/nvim-treesitter', }, }, { "dhruvasagar/vim-table-mode", }, { 'declancm/maximize.nvim', config = function() require('maximize').setup() end }, { "chrishrb/gx.nvim", keys = { { "gx", "Browse", mode = { "n", "x" } } }, cmd = { "Browse" }, init = function() vim.g.netrw_nogx = 1 -- disable netrw gx end, dependencies = { "nvim-lua/plenary.nvim" }, submodules = false, config = function() local platform = vim.loop.os_uname().sysname local app = "" if platform == "Darwin" then app = "open" elseif platform == "Linux" then app = "xdg-open" end require("gx").setup { open_browser_app = app, open_browser_args = { "--background" }, -- specify any arguments, such as --background for macOS' "open". handlers = { plugin = true, -- open plugin links in lua (e.g. packer, lazy, ..) github = true, -- open github issues brewfile = true, -- open Homebrew formulaes and casks package_json = true, -- open dependencies from package.json search = true, -- search the web/selection on the web if nothing else is found }, handler_options = { search_engine = "duckduckgo", -- you can select between google, bing, duckduckgo, and ecosia }, } end, }, { "willothy/flatten.nvim", config = function() require("flatten").setup({}) end, lazy = false, priority = 1001, }, { "chrisgrieser/nvim-recorder", dependencies = "rcarriga/nvim-notify", -- optional opts = {}, config = function() require("recorder").setup({ slots = { "a", "b", "c", "d" } }) end, }, }