173 lines
4.7 KiB
Lua
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,
|
|
},
|
|
})
|