-- 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 = { { "cc", "CopilotChatToggle", desc = "Copilot Chat" }, { "cq", "CopilotChatExplain", desc = "Explain code" }, { "cf", "CopilotChatFix", 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, }, })