local lsp_plugins = require 'plugin.lsp-plugins' local ui_plugins = require 'plugin.ui-plugins' local editor_plugins = require 'plugin.editor-plugins' local file_manager_plugins = require 'plugin.file-manager-plugins' local telescope_plugins = require 'plugin.telescope-plugins' local treesitter_plugins = require 'plugin.treesitter-plugins' local mini_plugins = require 'plugin.mini-plugins' local snack_plugins = require 'plugin.snacks' return { -- Themes { 'EdenEast/nightfox.nvim', lazy = false, priority = 1000, }, lsp_plugins, ui_plugins, editor_plugins, file_manager_plugins, telescope_plugins, treesitter_plugins, mini_plugins, snack_plugins, -- 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 }, { "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, }, { 'samharju/yeet.nvim', dependencies = { "stevearc/dressing.nvim" -- optional, provides sane UX }, version = "*", -- update only on releases cmd = 'Yeet', opts = {}, }, { "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", }, { "L3MON4D3/LuaSnip", version = "v2.*", run = "make install_jsregexp" }, { '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' }, { -- 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 = { } }, { "folke/trouble.nvim", dependencies = { "nvim-tree/nvim-web-devicons" }, opts = { }, }, { '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 }, { '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 }, { 'mfussenegger/nvim-lint', }, { '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 }, -- Notes and Markdown { "epwalsh/obsidian.nvim", version = "*", -- lazy = true, -- ft = "markdown", dependencies = { "nvim-lua/plenary.nvim", }, opts = { workspaces = { { name = "personal", path = "~/Notes", }, }, }, }, { 'MeanderingProgrammer/render-markdown.nvim', opts = {}, dependencies = { 'nvim-treesitter/nvim-treesitter', }, }, { 'jakewvincent/mkdnflow.nvim', config = function() require('mkdnflow').setup({ mappings = { MkdnIncreaseHeading = { 'n', '+' }, MkdnDecreaseHeading = { 'n', '_' }, } }) end }, { "HakonHarnes/img-clip.nvim", event = "VeryLazy", opts = { -- add options here -- or leave it empty to use the default settings }, keys = { -- suggested keymap { "p", "PasteImage", desc = "Paste image from system clipboard" }, }, }, -- End { '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, }, }