|  | @@ -1,361 +1,361 @@
 | 
	
		
			
				|  |  |  local execute = vim.api.nvim_command
 | 
	
		
			
				|  |  |  local fn = vim.fn
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -local install_path = fn.stdpath("data") .. "/site/pack/packer/start/packer.nvim"
 | 
	
		
			
				|  |  | +local 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")
 | 
	
		
			
				|  |  | +  execute("!git clone https://github.com/wbthomason/packer.nvim " .. install_path)
 | 
	
		
			
				|  |  | +  execute "packadd packer.nvim"
 | 
	
		
			
				|  |  |  end
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  local packer_ok, packer = pcall(require, "packer")
 | 
	
		
			
				|  |  |  if not packer_ok then
 | 
	
		
			
				|  |  | -	return
 | 
	
		
			
				|  |  | +  return
 | 
	
		
			
				|  |  |  end
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -packer.init({
 | 
	
		
			
				|  |  | -	git = { clone_timeout = 300 },
 | 
	
		
			
				|  |  | -	display = {
 | 
	
		
			
				|  |  | -		open_fn = function()
 | 
	
		
			
				|  |  | -			return require("packer.util").float({ border = "single" })
 | 
	
		
			
				|  |  | -		end,
 | 
	
		
			
				|  |  | -	},
 | 
	
		
			
				|  |  | -})
 | 
	
		
			
				|  |  | +packer.init {
 | 
	
		
			
				|  |  | +  git = { clone_timeout = 300 },
 | 
	
		
			
				|  |  | +  display = {
 | 
	
		
			
				|  |  | +    open_fn = function()
 | 
	
		
			
				|  |  | +      return require("packer.util").float { border = "single" }
 | 
	
		
			
				|  |  | +    end,
 | 
	
		
			
				|  |  | +  },
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -vim.cmd("autocmd BufWritePost plugins.lua PackerCompile")
 | 
	
		
			
				|  |  | +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)
 | 
	
		
			
				|  |  | -	end
 | 
	
		
			
				|  |  | +  -- 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)
 | 
	
		
			
				|  |  | +  end
 | 
	
		
			
				|  |  |  end)
 |