-- AstroCore provides a central place to modify mappings, vim options, autocommands, and more! -- Configuration documentation can be found with `:h astrocore` ---@type LazySpec return { "AstroNvim/astrocore", ---@type AstroCoreOpts opts = { autocmds = { restore_session = { { event = "VimEnter", desc = "Restore previous directory session if neovim opened with no arguments", nested = true, -- trigger other autocommands as buffers open callback = function() -- Only load the session if nvim was started with no args if vim.fn.argc(-1) == 0 then -- try to load a directory session using the current working directory require("resession").load(vim.fn.getcwd(), { dir = "dirsession", silence_errors = true }) end end, }, }, }, -- Configure core features of AstroNvim features = { large_buf = { size = 1024 * 256, lines = 10000 }, -- set global limits for large files for disabling features like treesitter autopairs = true, -- enable autopairs at start cmp = true, -- enable completion at start diagnostics_mode = 3, -- diagnostic mode on start (0 = off, 1 = no signs/virtual text, 2 = no virtual text, 3 = on) highlighturl = true, -- highlight URLs at start notifications = true, -- enable notifications at start }, -- Diagnostics configuration (for vim.diagnostics.config({...})) when diagnostics are on diagnostics = { virtual_text = true, underline = true, }, -- vim options can be configured here options = { opt = { -- vim.opt. relativenumber = true, -- sets vim.opt.relativenumber scrolloff = 8, -- sets vim.opt.scrolloff number = true, -- sets vim.opt.number spell = false, -- sets vim.opt.spell signcolumn = "yes", -- sets vim.opt.signcolumn to yes wrap = false, -- sets vim.opt.wrap }, g = { -- vim.g. -- configure global vim variables (vim.g) -- NOTE: `mapleader` and `maplocalleader` must be set in the AstroNvim opts or before `lazy.setup` -- This can be found in the `lua/lazy_setup.lua` file }, }, sessions = { -- Configure auto saving autosave = { last = true, -- auto save last session cwd = true, -- auto save session for each working directory }, -- Patterns to ignore when saving sessions ignore = { dirs = {}, -- working directories to ignore sessions in filetypes = { "gitcommit", "gitrebase" }, -- filetypes to ignore sessions buftypes = {}, -- buffer types to ignore sessions }, }, -- Mappings can be configured through AstroCore as well. -- NOTE: keycodes follow the casing in the vimdocs. For example, `` must be capitalized mappings = { -- first key is the mode n = { -- second key is the lefthand side of the map -- navigate buffer tabs ["]b"] = { function() require("astrocore.buffer").nav(vim.v.count1) end, desc = "Next buffer" }, ["[b"] = { function() require("astrocore.buffer").nav(-vim.v.count1) end, desc = "Previous buffer" }, -- mappings seen under group name "Buffer" ["bd"] = { function() require("astroui.status.heirline").buffer_picker( function(bufnr) require("astrocore.buffer").close(bufnr) end ) end, desc = "Close buffer from tabline", }, -- tables with just a `desc` key will be registered with which-key if it's installed -- this is useful for naming menus ["b"] = { desc = "Buffers" }, -- Harpoon mappings ["h"] = { desc = "Harpoon" }, ["ha"] = { function() require("harpoon"):list():add() end, desc = "Add to Harpoon" }, ["a"] = { function() require("harpoon"):list():add() end, desc = "Add to Harpoon" }, ["d"] = { function() require("harpoon"):list():remove() end, desc = "Remove from Harpoon" }, ["hc"] = { function() require("harpoon"):list():clear() end, desc = "Clear Harpoon" }, ["hf"] = { function() -- require("harpoon").ui:toggle_quick_menu(require("harpoon"):list()) local harpoon = require("harpoon") -- basic telescope configuration local conf = require("telescope.config").values local function toggle_telescope(harpoon_files) local file_paths = {} for _, item in ipairs(harpoon_files.items) do table.insert(file_paths, item.value) end require("telescope.pickers") .new({}, { prompt_title = "Harpoon", finder = require("telescope.finders").new_table({ results = file_paths, }), previewer = conf.file_previewer({}), sorter = conf.generic_sorter({}), }) :find() end toggle_telescope(harpoon:list()) end, desc = "Harpoon Quick Menu", }, [""] = { function() require("harpoon"):list():prev() end, desc = "Harpoon Previous File" }, [""] = { function() require("harpoon"):list():next() end, desc = "Harpoon Next File" }, }, }, }, }