173 lines
4.7 KiB
Lua

-- BOOTSTRAP LAZY.NVIM
local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim"
if not vim.loop.fs_stat(lazypath) then
vim.fn.system({
"git",
"clone",
"--filter=blob:none",
"https://github.com/folke/lazy.nvim.git",
"--branch=stable",
lazypath,
})
end
vim.opt.rtp:prepend(lazypath)
-- LAZY SETUP
require("lazy").setup({
-- 🧠 CORE UTILITIES
{ "nvim-lua/plenary.nvim" },
{ "ldelossa/nvim-ide" },
{ "folke/which-key.nvim" },
{
"akinsho/bufferline.nvim",
version = "*",
dependencies = { "nvim-tree/nvim-web-devicons" },
},
-- 📁 FILE NAVIGATION
{ "nvim-telescope/telescope.nvim", tag = "0.1.5", dependencies = { "nvim-lua/plenary.nvim" } },
-- 🎨 COLORSCHEME
{ "nvim-lualine/lualine.nvim" },
{ "rebelot/kanagawa.nvim" },
-- 💡 LSP + AUTOCOMPLETE
{ "neovim/nvim-lspconfig" },
{ "williamboman/mason.nvim", build = ":MasonUpdate" },
{ "williamboman/mason-lspconfig.nvim" },
{ "hrsh7th/nvim-cmp" },
{ "hrsh7th/cmp-nvim-lsp" },
{ "hrsh7th/cmp-buffer" },
{ "hrsh7th/cmp-path" },
{ "hrsh7th/cmp-cmdline" },
{ "L3MON4D3/LuaSnip" },
{ "saadparwaiz1/cmp_luasnip" },
{ "rafamadriz/friendly-snippets" },
{
"stevearc/conform.nvim",
event = "BufReadPre", -- lazy-load when opening a file
},
{
'windwp/nvim-autopairs',
event = "InsertEnter",
config = true,
opts = {}
},
{
"lukas-reineke/indent-blankline.nvim",
main = "ibl",
opts = {},
},
-- 🌳 TREESITTER
{ "nvim-treesitter/nvim-treesitter", build = ":TSUpdate" },
{ "nvim-tree/nvim-tree.lua" },
{ "nvim-tree/nvim-web-devicons" },
-- 🔧 GIT SUPPORT
{ "tpope/vim-fugitive" },
{ "lewis6991/gitsigns.nvim" },
-- 📊 STATUSLINE
{ "nvim-lualine/lualine.nvim" },
{ 'karb94/neoscroll.nvim' },
-- 💻 TERMINAL
{ "akinsho/toggleterm.nvim", version = "*" },
{
'mawkler/modicator.nvim',
opts = {}
},
{
-- TODO:
-- FIX:
-- DONE:
-- TEST:
-- OPTIMIZE:
-- TEMP:
-- TAG:
"folke/todo-comments.nvim",
dependencies = { "nvim-lua/plenary.nvim" },
opts = {
keywords = {
TODO = { icon = "", color = "info", alt = { "NOTE" } },
FIX = { icon = "", color = "error", alt = { "FIXME", "BUG", "ISSUE" } },
DONE = { icon = "", color = "done", alt = { "COMPLETE" } },
TEST = { icon = "", color = "test", alt = { "TESTING", "PASSED", "FAILED" } },
OPTIMIZE = { icon = "", color = "perfomance", alt = { "PERFORMANCE" } },
TEMP = { icon = "? ", color = "warning", alt = { "TEMPORARY" } },
TAG = { icon = "", color = "white", alt = { "LABEL" } },
},
colors = {
error = { "DiagnosticError", "ErrorMsg", "#ff8800" }, -- orange / yellow
info = { "DiagnosticInfo", "#00afff" }, -- blue
done = { "DiagnosticOk", "#00ff5f" }, -- bright green
test = { "#ffff00" }, -- yellow
perfomance = { "#ff00ff" }, -- magenta
warning = { "DiagnosticWarn", "#ff5f00" }, -- orange
white = { "Normal", "#ffffff" },
},
},
config = function(_, opts)
require("todo-comments").setup(opts)
end,
},
-- 🤖 COPILOT
{ "github/copilot.vim" },
{
"CopilotC-Nvim/CopilotChat.nvim",
dependencies = {
{ "zbirenbaum/copilot.lua" }, -- required core
{ "nvim-lua/plenary.nvim" }, -- required
},
opts = {
show_help = true,
auto_insert_mode = true,
},
cmd = "CopilotChat",
keys = {
{ "<leader>cc", "<cmd>CopilotChatToggle<cr>", desc = "Copilot Chat" },
{ "<leader>cq", "<cmd>CopilotChatExplain<cr>", desc = "Explain code" },
{ "<leader>cf", "<cmd>CopilotChatFix<cr>", desc = "Fix code" },
},
},
}, {})
require("plugins.lualine")
require("plugins.bufferline")
require("which-key").setup {}
require("core.options")
require("core.keymaps")
require("plugins.colorscheme")
require("plugins.cmp")
require("plugins.lsp")
require("plugins.ibl")
require("plugins.conform")
require("nvim-tree").setup({
sort = {
sorter = "case_sensitive",
},
view = {
width = 30,
},
renderer = {
group_empty = true,
},
filters = {
dotfiles = true,
},
})