116 lines
2.9 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" },
{ "projekt0n/github-nvim-theme", priority = 1000 },
-- 💡 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
},
-- 🌳 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" },
-- 💻 TERMINAL
{ "akinsho/toggleterm.nvim", version = "*" },
-- 🤖 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.conform")
require("nvim-tree").setup({
sort = {
sorter = "case_sensitive",
},
view = {
width = 30,
},
renderer = {
group_empty = true,
},
filters = {
dotfiles = true,
},
})