local function masterBranch(dep) return { dep, branch = "master", } end return { { "nvim-treesitter/nvim-treesitter", opts = { ensure_installed = { "bash", "html", "javascript", "json", "lua", "markdown", "markdown_inline", "python", "query", "regex", "tsx", "typescript", "vim", "yaml", "heex", "elixir", }, highlight = { enable = true }, indent = { enable = true }, incremental_selection = { enable = true, keymaps = { node_incremental = "v", node_decremental = "V", }, }, }, }, { "gsuuon/note.nvim", lazy = false, opts = { -- opts.spaces are note workspace parent directories. -- These directories contain a `notes` directory which will be created if missing. -- `/notes` acts as the note root, so for space '~' the note root is `~/notes`. -- Defaults to { '~' }. spaces = { "~/git", }, -- Set keymap = false to disable keymapping keymap = { prefix = "n", }, }, cmd = "Note", ft = "note", }, -- { "nvim-neotest/nvim-nio" }, { "nvim-lualine/lualine.nvim" }, -- { -- "nvim-neotest/neotest", -- dependencies = { -- "jfpedroza/neotest-elixir", -- }, -- opts = { -- adapters = { -- ["neotest-elixir"] = {}, -- }, -- }, -- }, { "neovim/nvim-lspconfig", opts = { servers = { -- disable to prevent elixir extra to install it automatically elixirls = false, }, }, }, { "chrisgrieser/nvim-spider", lazy = true }, -- { -- "hrsh7th/nvim-cmp", -- opts = { -- sources = { -- { name = "copilot", group_index = 2 }, -- -- Other Sources -- { name = "nvim_lsp", group_index = 2 }, -- { name = "path", group_index = 2 }, -- { name = "luasnip", group_index = 2 }, -- }, -- }, -- }, { "ibhagwan/fzf-lua", opts = { buffers = { actions = { ["ctrl-w"] = { fn = require("fzf-lua.actions").buf_del, reload = true }, }, }, }, }, { "MagicDuck/grug-far.nvim", opts = { headerMaxWidth = 80 }, cmd = "GrugFar", keys = { { "sr", function() local grug = require("grug-far") local ext = vim.bo.buftype == "" and vim.fn.expand("%:e") grug.open({ transient = true, prefills = { filesFilter = ext and ext ~= "" and "*." .. ext or nil, }, }) end, mode = { "n", "v" }, desc = "Search and Replace", }, }, }, -- { -- "garymjr/nvim-snippets", -- opts = { -- search_paths = { "/Users/kacper.marzecki@schibsted.com/.snippets" }, -- }, -- }, { "folke/snacks.nvim", opts = { -- dashboard = { enabled = false }, -- scratch = { enabled = false }, -- terminal = { enabled = false }, scroll = { enabled = false }, -- indent = { enabled = false }, }, }, { "rafamadriz/friendly-snippets", enabled = false, }, { "folke/zen-mode.nvim", keys = { { "z", "ZenMode", desc = "Zen Mode", }, }, opts = { window = { backdrop = 0.95, -- shade the backdrop of the Zen window. Set to 1 to keep the same as Normal -- height and width can be: -- * an absolute number of cells when > 1 -- * a percentage of the width / height of the editor when <= 1 -- * a function that returns the width or the height width = 120, -- width of the Zen window height = 1, -- height of the Zen window -- by default, no options are changed for the Zen window -- uncomment any of the options below, or add other vim.wo options you want to apply options = { -- signcolumn = "no", -- disable signcolumn -- number = false, -- disable number column -- relativenumber = false, -- disable relative numbers -- cursorline = false, -- disable cursorline -- cursorcolumn = false, -- disable cursor column -- foldcolumn = "0", -- disable fold column -- list = false, -- disable whitespace characters }, }, plugins = { -- disable some global vim options (vim.o...) -- comment the lines to not apply the options options = { enabled = true, ruler = false, -- disables the ruler text in the cmd line area showcmd = false, -- disables the command in the last line of the screen -- you may turn on/off statusline in zen mode by setting 'laststatus' -- statusline will be shown only if 'laststatus' == 3 laststatus = 0, -- turn off the statusline in zen mode }, twilight = { enabled = true }, -- enable to start Twilight when zen mode opens gitsigns = { enabled = false }, -- disables git signs tmux = { enabled = false }, -- disables the tmux statusline todo = { enabled = false }, -- if set to "true", todo-comments.nvim highlights will be disabled -- this will change the font size on kitty when in zen mode -- to make this work, you need to set the following kitty options: -- - allow_remote_control socket-only -- - listen_on unix:/tmp/kitty kitty = { enabled = false, font = "+4", -- font size increment }, -- this will change the font size on alacritty when in zen mode -- requires Alacritty Version 0.10.0 or higher -- uses `alacritty msg` subcommand to change font size alacritty = { enabled = false, font = "14", -- font size }, -- this will change the font size on wezterm when in zen mode -- See alse also the Plugins/Wezterm section in this projects README wezterm = { enabled = false, -- can be either an absolute font size or the number of incremental steps font = "+4", -- (10% increase per step) }, }, on_open = function(win) end, on_close = function() end, }, }, { "nvim-telescope/telescope.nvim", enabled = true, opts = { defaults = { mappings = { i = { [""] = "which_key", [""] = "move_selection_next", [""] = "move_selection_previous", }, }, }, }, keys = { { ",", false, }, }, }, { "tomasky/bookmarks.nvim", dependencies = { "nvim-telescope/telescope.nvim" }, config = function(_, opts) require("bookmarks").setup(opts) require("telescope").load_extension("bookmarks") end, }, { "gpanders/nvim-parinfer", }, { "zaldih/themery.nvim", lazy = false, opts = { themes = { -- "nightfox", -- "carbonfox", -- "terafox", -- "nordfox", -- "duskfox", -- "dawnfox", -- "dayfox", -- "blue", -- "darkblue", -- "blue", -- "delek", -- "desert", -- "elflord", -- "evening", -- "industry", -- "koehler", -- "morning", -- "murphy", -- "pablo", "peachpuff", "kanagawa-wave", "kanagawa-dragon", "kanagawa-lotus", -- "ron", -- "shine", -- "slate", -- "torte", -- "zellner", "tokyonight", "tokyonight-night", "tokyonight-storm", "tokyonight-day", "tokyonight-moon", "oxocarbon", "vscode", }, }, }, { "EdenEast/nightfox.nvim", opts = { colorblind = { enable = true, }, } }, { "catppuccin/nvim", name = "catppuccin" }, { "folke/tokyonight.nvim", opts = { transparent = true, styles = { sidebars = "transparent", floats = "transparent", }, }, }, { "michaelb/sniprun", branch = "master", build = "sh install.sh", config = function() require("sniprun").setup({ repl_enable = { "Elixir_original", "elixir" }, display = { "TerminalWithCode", }, }) end, }, -- { -- "zbirenbaum/copilot.lua", -- opts = { -- filetypes = { -- lua = true, -- markdown = true, -- javascript = true, -- typescript = true, -- elixir = true, -- }, -- }, -- }, { "robitx/gp.nvim", opts = { providers = { openai = { endpoint = "https://api.openai.com/v1/chat/completions", secret = { "echo ", "$OPENAI_API_KEY", }, }, }, }, }, { "lmantw/themify.nvim", lazy = false, priority = 999, opts = { "folke/tokyonight.nvim", "Yazeed1s/minimal.nvim", masterBranch("sho-87/kanagawa-paper.nvim"), masterBranch("ray-x/starry.nvim"), masterBranch("sainnhe/everforest"), "default", }, }, { "vhyrro/luarocks.nvim", priority = 1000, opts = { luarocks_build_args = { "--with-lua-include=/usr/include", }, }, }, -- { -- "stevearc/oil.nvim", -- ---@module 'oil' -- ---@type oil.SetupOpts -- opts = {}, -- -- Optional dependencies -- dependencies = { { "echasnovski/mini.icons", opts = {} } }, -- -- dependencies = { "nvim-tree/nvim-web-devicons" }, -- use if you prefer nvim-web-devicons -- -- Lazy loading is not recommended because it is very tricky to make it work correctly in all situations. -- lazy = false, -- }, { "yetone/avante.nvim", event = "VeryLazy", version = false, -- for macos opts = vim.loop.os_uname().sysname == "Darwin" and { provider = "copilot", copilot = { -- endpoint = "https://api.githubcopilot.com/chat/completions", model = "gpt-4o", -- timeout = 30000, -- timeout in milliseconds -- temperature = 0, -- adjust if needed -- max_tokens = 4096, -- reasoning_effort = "high" -- only supported for reasoning models (o1, etc.) }, } -- for linux or { provider = "openai", openai = { model = "gpt-4o", }, }, -- if you want to build from source then do `make BUILD_FROM_SOURCE=true` build = "make", -- build = "powershell -ExecutionPolicy Bypass -File Build.ps1 -BuildFromSource false" -- for windows dependencies = { "nvim-treesitter/nvim-treesitter", "stevearc/dressing.nvim", "nvim-lua/plenary.nvim", "MunifTanjim/nui.nvim", --- The below dependencies are optional, "echasnovski/mini.pick", -- for file_selector provider mini.pick "nvim-telescope/telescope.nvim", -- for file_selector provider telescope "hrsh7th/nvim-cmp", -- autocompletion for avante commands and mentions "ibhagwan/fzf-lua", -- for file_selector provider fzf "nvim-tree/nvim-web-devicons", -- or echasnovski/mini.icons "zbirenbaum/copilot.lua", -- for providers='copilot' { -- support for image pasting "HakonHarnes/img-clip.nvim", event = "VeryLazy", opts = { -- recommended settings default = { embed_image_as_base64 = false, prompt_for_file_name = false, drag_and_drop = { insert_mode = true, }, -- required for Windows users use_absolute_path = true, }, }, }, { -- Make sure to set this up properly if you have lazy=true "MeanderingProgrammer/render-markdown.nvim", opts = { file_types = { "markdown", "Avante" }, }, ft = { "markdown", "Avante" }, }, }, }, { "akinsho/toggleterm.nvim", version = "*", config = true }, { "ThePrimeagen/harpoon", branch = "harpoon2", dependencies = { "nvim-lua/plenary.nvim" }, opts = { file_with_line = { create_list_item = function() local file_path = vim.fn.expand("%:p") -- Absolute file path local line_number = vim.fn.line(".") if file_path == "" then return nil end return { value = file_path .. ":" .. line_number, context = { file_path = file_path, line_number = line_number }, } end, select = function(list_item, list, option) vim.cmd("edit " .. list_item.context.file_path) -- Jump to the line vim.api.nvim_win_set_cursor(0, { list_item.context.line_number, 0 }) end, }, }, }, { "sindrets/diffview.nvim", opts = {}, }, { "lewis6991/gitsigns.nvim", event = "LazyFile", opts = { signs = { add = { text = "▎" }, change = { text = "▎" }, delete = { text = "" }, topdelete = { text = "" }, changedelete = { text = "▎" }, untracked = { text = "▎" }, }, signs_staged = { add = { text = "▎" }, change = { text = "▎" }, delete = { text = "" }, topdelete = { text = "" }, changedelete = { text = "▎" }, }, on_attach = function(buffer) local gs = package.loaded.gitsigns local function map(mode, l, r, desc) vim.keymap.set(mode, l, r, { buffer = buffer, desc = desc }) end -- stylua: ignore start map("n", "]h", function() if vim.wo.diff then vim.cmd.normal({ "]c", bang = true }) else gs.nav_hunk("next") end end, "Next Hunk") map("n", "[h", function() if vim.wo.diff then vim.cmd.normal({ "[c", bang = true }) else gs.nav_hunk("prev") end end, "Prev Hunk") map("n", "]H", function() gs.nav_hunk("last") end, "Last Hunk") map("n", "[H", function() gs.nav_hunk("first") end, "First Hunk") map({ "n", "v" }, "ghs", ":Gitsigns stage_hunk", "Stage Hunk") map({ "n", "v" }, "ghr", ":Gitsigns reset_hunk", "Reset Hunk") map("n", "ghS", gs.stage_buffer, "Stage Buffer") map("n", "ghu", gs.undo_stage_hunk, "Undo Stage Hunk") map("n", "ghR", gs.reset_buffer, "Reset Buffer") map("n", "ghp", gs.preview_hunk_inline, "Preview Hunk Inline") map("n", "ghb", function() gs.blame_line({ full = true }) end, "Blame Line") map("n", "ghB", function() gs.blame() end, "Blame Buffer") map("n", "ghd", gs.diffthis, "Diff This") map("n", "ghD", function() gs.diffthis("~") end, "Diff This ~") map({ "o", "x" }, "ih", ":Gitsigns select_hunk", "GitSigns Select Hunk") end, }, }, }