| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361 | local execute = vim.api.nvim_commandlocal fn = vim.fnlocal install_path = fn.stdpath("data") .. "/site/pack/packer/start/packer.nvim"if fn.empty(fn.glob(install_path)) > 0 then	execute("!git clone https://github.com/wbthomason/packer.nvim " .. install_path)	execute("packadd packer.nvim")endlocal packer_ok, packer = pcall(require, "packer")if not packer_ok then	returnendpacker.init({	git = { clone_timeout = 300 },	display = {		open_fn = function()			return require("packer.util").float({ border = "single" })		end,	},})vim.cmd("autocmd BufWritePost plugins.lua PackerCompile")return require("packer").startup(function(use)	-- Packer can manage itself as an optional plugin	use("wbthomason/packer.nvim")	-- TODO refactor all of this (for now it works, but yes I know it could be wrapped in a simpler function)	use({ "neovim/nvim-lspconfig" })	use({ "kabouzeid/nvim-lspinstall", event = "BufRead" })	-- Telescope	use({ "nvim-lua/popup.nvim" })	use({ "nvim-lua/plenary.nvim" })	use({ "tjdevries/astronauta.nvim" })	use({		"nvim-telescope/telescope.nvim",		config = [[require('lv-telescope')]],		event = "BufEnter",	})	-- Autocomplete	use({		"hrsh7th/nvim-compe",		event = "InsertEnter",		config = function()			require("lv-compe").config()		end,	})	use({ "hrsh7th/vim-vsnip", event = "InsertEnter" })	use({ "rafamadriz/friendly-snippets", event = "InsertEnter" })	-- Treesitter	use({ "nvim-treesitter/nvim-treesitter", run = ":TSUpdate" })	-- Neoformat	use({ "sbdchd/neoformat" })	use({		"kyazdani42/nvim-tree.lua",		-- cmd = "NvimTreeToggle",		config = function()			require("lv-nvimtree").config()		end,	})	use({		"lewis6991/gitsigns.nvim",		config = function()			require("lv-gitsigns").config()		end,		event = "BufRead",	})	-- whichkey	use({ "folke/which-key.nvim" })	-- Autopairs	use({		"windwp/nvim-autopairs",		event = "InsertEnter",		after = { "telescope.nvim" },		config = function()			require("lv-autopairs")		end,	})	-- Comments	use({		"terrortylor/nvim-comment",		cmd = "CommentToggle",		config = function()			local status_ok, nvim_comment = pcall(require, "nvim_comment")			if not status_ok then				return			end			nvim_comment.setup()		end,	})	-- Color	use({ "christianchiarulli/nvcode-color-schemes.vim", opt = true })	-- Icons	use({ "kyazdani42/nvim-web-devicons" })	-- Status Line and Bufferline	use({ "glepnir/galaxyline.nvim" })	use({		"romgrk/barbar.nvim",		config = function()			vim.api.nvim_set_keymap("n", "<TAB>", ":BufferNext<CR>", { noremap = true, silent = true })			vim.api.nvim_set_keymap("n", "<S-TAB>", ":BufferPrevious<CR>", { noremap = true, silent = true })			vim.api.nvim_set_keymap("n", "<S-x>", ":BufferClose<CR>", { noremap = true, silent = true })		end,		-- event = "BufRead",	})	-- Builtins, these do not load by default	-- Dashboard	use({		"ChristianChiarulli/dashboard-nvim",		-- event = "BufWinEnter",		-- cmd = { "Dashboard", "DashboardNewFile", "DashboardJumpMarks" },		config = function()			require("lv-dashboard").config()		end,		disable = not O.plugin.dashboard.active,		-- opt = true,	})	-- Zen Mode	use({		"folke/zen-mode.nvim",		cmd = "ZenMode",		-- event = "BufRead",		config = function()			require("lv-zen").config()		end,		disable = not O.plugin.zen.active,	})	use({		"norcalli/nvim-colorizer.lua",		event = "BufRead",		config = function()			require("lv-colorizer")			-- vim.cmd "ColorizerReloadAllBuffers"		end,		disable = not O.plugin.colorizer.active,	})	-- Treesitter playground	use({		"nvim-treesitter/playground",		event = "BufRead",		disable = not O.plugin.ts_playground.active,	})	use({		"lukas-reineke/indent-blankline.nvim",		event = "BufRead",		setup = function()			vim.g.indentLine_enabled = 1			vim.g.indent_blankline_char = "▏"			vim.g.indent_blankline_filetype_exclude = {				"help",				"terminal",				"dashboard",			}			vim.g.indent_blankline_buftype_exclude = { "terminal" }			vim.g.indent_blankline_show_trailing_blankline_indent = false			vim.g.indent_blankline_show_first_indent_level = true		end,		disable = not O.plugin.indent_line.active,	})	-- comments in context	use({		"JoosepAlviste/nvim-ts-context-commentstring",		event = "BufRead",		disable = not O.plugin.ts_context_commentstring.active,	})	-- Symbol Outline	use({		"simrat39/symbols-outline.nvim",		cmd = "SymbolsOutline",		disable = not O.plugin.symbol_outline.active,	})	-- diagnostics	use({		"folke/trouble.nvim",		cmd = "TroubleToggle",		disable = not O.plugin.trouble.active,	})	-- Debugging	use({		"mfussenegger/nvim-dap",		config = function()			local status_ok, dap = pcall(require, "dap")			if not status_ok then				return			end			-- require "dap"			vim.fn.sign_define("DapBreakpoint", {				text = "",				texthl = "LspDiagnosticsSignError",				linehl = "",				numhl = "",			})			dap.defaults.fallback.terminal_win_cmd = "50vsplit new"		end,		disable = not O.plugin.debug.active,	})	-- Floating terminal	use({		"numToStr/FTerm.nvim",		event = "BufWinEnter",		config = function()			require("lv-floatterm").config()		end,		disable = not O.plugin.floatterm.active,	})	-- Use fzy for telescope	use({		"nvim-telescope/telescope-fzy-native.nvim",		event = "BufRead",		disable = not O.plugin.telescope_fzy.active,	})	-- Use project for telescope	use({		"nvim-telescope/telescope-project.nvim",		event = "BufRead",		setup = function()			vim.cmd([[packadd telescope.nvim]])		end,		disable = not O.plugin.telescope_project.active,	})	-- Sane gx for netrw_gx bug	use({		"felipec/vim-sanegx",		event = "BufRead",		disable = not O.plugin.sanegx.active,	})	-- Diffview	use({		"sindrets/diffview.nvim",		event = "BufRead",		disable = not O.plugin.diffview.active,	})	-- Lush Create Color Schemes	use({		"rktjmp/lush.nvim",		-- cmd = {"LushRunQuickstart", "LushRunTutorial", "Lushify"},		disable = not O.plugin.lush.active,	})	-- Debugger management	use({		"Pocco81/DAPInstall.nvim",		-- event = "BufRead",		disable = not O.plugin.dap_install.active,	})	-- LANGUAGE SPECIFIC GOES HERE	use({		"lervag/vimtex",		ft = "tex",		config = function()			require("lv-vimtex")		end,	})	-- Rust tools	-- TODO: use lazy loading maybe?	use({		"simrat39/rust-tools.nvim",		disable = not O.lang.rust.rust_tools.active,	})	-- Elixir	use({ "elixir-editors/vim-elixir", ft = { "elixir", "eelixir", "euphoria3" } })	-- Javascript / Typescript	use({		"jose-elias-alvarez/nvim-lsp-ts-utils",		ft = {			"javascript",			"javascriptreact",			"javascript.jsx",			"typescript",			"typescriptreact",			"typescript.tsx",		},	})	-- use {	--   "jose-elias-alvarez/null-ls.nvim",	--   ft = {	--     "javascript",	--     "javascriptreact",	--     "javascript.jsx",	--     "typescript",	--     "typescriptreact",	--     "typescript.tsx",	--   },	--   config = function()	--     require("null-ls").setup()	--   end,	-- }	-- Pretty parentheses	use({		"p00f/nvim-ts-rainbow",		disable = not O.plugin.ts_rainbow.active,	})	-- Autotags <div>|</div>	use({		"windwp/nvim-ts-autotag",		event = "InsertEnter",		disable = not O.plugin.ts_autotag.active,	})	-- Custom semantic text objects	use({		"nvim-treesitter/nvim-treesitter-textobjects",		disable = not O.plugin.ts_textobjects.active,	})	-- Smart text objects	use({		"RRethy/nvim-treesitter-textsubjects",		disable = not O.plugin.ts_textsubjects.active,	})	-- Text objects using hint labels	use({		"mfussenegger/nvim-ts-hint-textobject",		event = "BufRead",		disable = not O.plugin.ts_hintobjects.active,	})	for _, plugin in pairs(O.user_plugins) do		packer.use(plugin)	endend)
 |