2024-07-11 15:32:22 +05:30
|
|
|
-- AstroCore provides a central place to modify mappings, vim options, autocommands, and more!
|
|
|
|
-- Configuration documentation can be found with `:h astrocore`
|
|
|
|
|
|
|
|
---@type LazySpec
|
|
|
|
return {
|
2024-08-27 20:26:51 +05:30
|
|
|
"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.<key>
|
|
|
|
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.<key>
|
|
|
|
-- 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, `<Leader>` must be capitalized
|
|
|
|
mappings = {
|
|
|
|
-- first key is the mode
|
|
|
|
n = {
|
|
|
|
-- second key is the lefthand side of the map
|
2024-07-11 15:32:22 +05:30
|
|
|
|
2024-08-27 20:26:51 +05:30
|
|
|
-- 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" },
|
2024-07-11 15:32:22 +05:30
|
|
|
|
2024-08-27 20:26:51 +05:30
|
|
|
-- mappings seen under group name "Buffer"
|
|
|
|
["<Leader>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
|
|
|
|
["<Leader>b"] = { desc = "Buffers" },
|
|
|
|
-- Harpoon mappings
|
|
|
|
["<Leader>h"] = { desc = "Harpoon" },
|
|
|
|
["<Leader>ha"] = { function() require("harpoon"):list():add() end, desc = "Add to Harpoon" },
|
|
|
|
["<Leader>a"] = { function() require("harpoon"):list():add() end, desc = "Add to Harpoon" },
|
|
|
|
["<Leader>d"] = { function() require("harpoon"):list():remove() end, desc = "Remove from Harpoon" },
|
|
|
|
["<Leader>hc"] = { function() require("harpoon"):list():clear() end, desc = "Clear Harpoon" },
|
|
|
|
["<Leader>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
|
2024-07-11 15:32:22 +05:30
|
|
|
|
2024-08-27 20:26:51 +05:30
|
|
|
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",
|
|
|
|
},
|
|
|
|
["<C-J>"] = { function() require("harpoon"):list():prev() end, desc = "Harpoon Previous File" },
|
|
|
|
["<C-K>"] = { function() require("harpoon"):list():next() end, desc = "Harpoon Next File" },
|
|
|
|
},
|
|
|
|
},
|
|
|
|
},
|
2024-07-11 15:32:22 +05:30
|
|
|
}
|