summaryrefslogtreecommitdiff
path: root/.config/nvim/lua/plugins.lua
diff options
context:
space:
mode:
Diffstat (limited to '.config/nvim/lua/plugins.lua')
-rw-r--r--.config/nvim/lua/plugins.lua403
1 files changed, 274 insertions, 129 deletions
diff --git a/.config/nvim/lua/plugins.lua b/.config/nvim/lua/plugins.lua
index 66ca22c..4fc780d 100644
--- a/.config/nvim/lua/plugins.lua
+++ b/.config/nvim/lua/plugins.lua
@@ -1,139 +1,284 @@
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
---- Check if a file or directory exists in this path
-local function require_plugin(plugin)
- local plugin_prefix = fn.stdpath("data") .. "/site/pack/packer/opt/"
-
- local plugin_path = plugin_prefix .. plugin .. "/"
- -- print('test '..plugin_path)
- local ok, err, code = os.rename(plugin_path, plugin_path)
- if not ok then
- if code == 13 then
- -- Permission denied, but it exists
- return true
- end
- end
- -- print(ok, err, code)
- if ok then vim.cmd("packadd " .. plugin) end
- return ok, err, code
+local packer_ok, packer = pcall(require, "packer")
+if not packer_ok then
+ return
end
-vim.cmd "autocmd BufWritePost plugins.lua PackerCompile" -- Auto compile when there are changes in plugins.lua
-
-return require("packer").startup(
- function(use)-- Packer can manage itself as an optional plugin
- -- 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", opt = true}
- use {"glepnir/lspsaga.nvim", opt = true}
- use {"kabouzeid/nvim-lspinstall", opt = true}
- use {"folke/trouble.nvim", opt = true}
-
- -- Telescope
- use {"nvim-lua/popup.nvim", opt = true}
- use {"nvim-lua/plenary.nvim", opt = true}
- use {"nvim-telescope/telescope.nvim", opt = true}
- use {"nvim-telescope/telescope-fzy-native.nvim", opt = true}
- use {"nvim-telescope/telescope-project.nvim", opt = true}
-
- -- Autocomplete
- use {"hrsh7th/nvim-compe", opt = true}
- use {"hrsh7th/vim-vsnip", opt = true}
- use {"rafamadriz/friendly-snippets", opt = true}
-
- -- Treesitter
- use {"nvim-treesitter/nvim-treesitter", run = ":TSUpdate"}
- use {"windwp/nvim-ts-autotag", opt = true}
- use {'andymass/vim-matchup', opt = true}
-
- -- Explorer
- use {"kyazdani42/nvim-tree.lua", opt = true}
- use {"ahmedkhalf/lsp-rooter.nvim", opt = true} -- with this nvim-tree will follow you
-
- -- TODO remove when open on dir is supported by nvimtree
- use "kevinhwang91/rnvimr"
-
- -- git
- use {"lewis6991/gitsigns.nvim", opt = true}
- use {'f-person/git-blame.nvim', opt = true}
-
- use {"ChristianChiarulli/dashboard-nvim", opt = true}
- use {"windwp/nvim-autopairs", opt = true}
- use {"kevinhwang91/nvim-bqf", opt = true}
-
- -- Comments
- use {"terrortylor/nvim-comment", opt = true}
-
- -- Icons
- use {"kyazdani42/nvim-web-devicons", opt = true}
-
- -- Status Line and Bufferline
- use 'glepnir/galaxyline.nvim'
- use {'akinsho/nvim-bufferline.lua', requires = 'kyazdani42/nvim-web-devicons'}
- use {"romgrk/barbar.nvim", opt = true}
-
- -- Which key
- use {"folke/which-key.nvim", opt = true}
-
- -- Colorschemes
- use 'aktersnurra/githubsy.vim'
- use {"aktersnurra/nvcode-color-schemes.vim", opt = true}
- use 'RRethy/nvim-base16'
-
- -- General Plugins [my own additions]
- use 'unblevable/quick-scope'
- use {"Pocco81/TrueZen.nvim", opt = true}
-
- -- Extras
- use {'nacro90/numb.nvim', opt = true}
- use {'phaazon/hop.nvim', opt = true}
- use {'norcalli/nvim-colorizer.lua', opt = true}
- use 'airblade/vim-rooter'
-
- require_plugin("nvim-lspconfig")
- require_plugin("lspsaga.nvim")
- require_plugin("nvim-lspinstall")
- require_plugin('trouble.nvim')
- require_plugin("friendly-snippets")
- require_plugin("popup.nvim")
- require_plugin("plenary.nvim")
- require_plugin("telescope.nvim")
- require_plugin('telescope-project.nvim')
- require_plugin("nvim-compe")
- require_plugin("vim-vsnip")
- require_plugin("nvim-treesitter")
- require_plugin('vim-matchup')
- require_plugin("nvim-tree.lua")
- require_plugin("gitsigns.nvim")
- require_plugin("git-blame.nvim")
- require_plugin("vim-which-key")
- require_plugin("dashboard-nvim")
- require_plugin("nvim-autopairs")
- require_plugin("nvim-comment")
- require_plugin("nvim-bqf")
- require_plugin("nvcode-color-schemes.vim")
- require_plugin("nvim-web-devicons")
- require_plugin("galaxyline.nvim")
- require_plugin("barbar.nvim")
- require_plugin('lsp-rooter.nvim')
- require_plugin("which-key.nvim")
-
- require_plugin("vim-rooter")
- require_plugin('numb.nvim')
- require_plugin('hop.nvim')
- require_plugin('nvim-colorizer.lua')
-
- require_plugin("quick-scope")
- require_plugin("TrueZen.nvim")
+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"
+
+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('cfg.telescope')]],
+ event = "BufEnter",
+ }
+
+ -- Autocomplete
+ use {
+ "hrsh7th/nvim-compe",
+ event = "InsertEnter",
+ config = function()
+ require("cfg.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("cfg.nvimtree").config()
+ end,
+ }
+
+ use {
+ "lewis6991/gitsigns.nvim",
+
+ config = function()
+ require("cfg.gitsigns").config()
+ end,
+ event = "BufRead",
+ }
+
+ -- whichkey
+ use { "folke/which-key.nvim" }
+
+ -- Autopairs
+ use {
+ "windwp/nvim-autopairs",
+ event = "InsertEnter",
+ after = { "telescope.nvim" },
+ config = function()
+ require "cfg.autopairs"
+ end,
+ }
+
+ -- Comments
+ use {
+ "terrortylor/nvim-comment",
+ cmd = "CommentToggle",
+ config = function()
+ require("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("cfg.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("cfg.zen").config()
+ end,
+ disable = not O.plugin.zen.active,
+ }
+
+ use {
+ "norcalli/nvim-colorizer.lua",
+ event = "BufRead",
+ config = function()
+ require("colorizer").setup()
+ vim.cmd "ColorizerReloadAllBuffers"
+ end,
+ disable = not O.plugin.colorizer.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,
+ }
+
+ -- 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,
+ }
+
+ -- LANGUAGE SPECIFIC GOES HERE
+ use {
+ "lervag/vimtex",
+ ft = "tex",
+ config = function()
+ require "cfg.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",
+ },
+ }
+
+ -- 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,
+ }
+
+ -- vim rooter for projects
+ use {
+ "airblade/vim-rooter",
+ event = "BufRead",
+ disable = not O.plugin.vim_rooter.active,
+ }
+
+ -- hop
+ use {
+ "phaazon/hop.nvim",
+ disable = not O.plugin.hop.active,
+ }
+
+ for _, plugin in pairs(O.custom_plugins) do
+ packer.use(plugin)
end
-)
+end)