dotfiles/dot_config/nvim/lua/core/plugins.lua

297 lines
7.8 KiB
Lua

local astro_plugins = {
-- Plugin manager
["wbthomason/packer.nvim"] = {},
-- Optimiser
["lewis6991/impatient.nvim"] = {},
-- Lua functions
["nvim-lua/plenary.nvim"] = { module = "plenary" },
-- Indent detection
["Darazaki/indent-o-matic"] = {
event = "BufEnter",
config = function() require "configs.indent-o-matic" end,
},
-- Notification Enhancer
["rcarriga/nvim-notify"] = {
event = "UIEnter",
config = function() require "configs.notify" end,
},
-- Neovim UI Enhancer
["stevearc/dressing.nvim"] = {
event = "UIEnter",
config = function() require "configs.dressing" end,
},
-- Smarter Splits
["mrjones2014/smart-splits.nvim"] = {
module = "smart-splits",
config = function() require "configs.smart-splits" end,
},
-- Icons
["kyazdani42/nvim-web-devicons"] = {
disable = not vim.g.icons_enabled,
module = "nvim-web-devicons",
config = function() require "configs.nvim-web-devicons" end,
},
-- LSP Icons
["onsails/lspkind.nvim"] = {
disable = not vim.g.icons_enabled,
module = "lspkind",
config = function() require "configs.lspkind" end,
},
-- Bufferline
["akinsho/bufferline.nvim"] = {
event = "UIEnter",
config = function() require "configs.bufferline" end,
},
-- Better buffer closing
["famiu/bufdelete.nvim"] = { cmd = { "Bdelete", "Bwipeout" } },
["s1n7ax/nvim-window-picker"] = {
tag = "v1.*",
module = "window-picker",
config = function() require "configs.window-picker" end,
},
-- File explorer
["nvim-neo-tree/neo-tree.nvim"] = {
branch = "v2.x",
module = "neo-tree",
cmd = "Neotree",
requires = { { "MunifTanjim/nui.nvim", module = "nui" } },
setup = function() vim.g.neo_tree_remove_legacy_commands = true end,
config = function() require "configs.neo-tree" end,
},
-- Statusline
["rebelot/heirline.nvim"] = { config = function() require "configs.heirline" end },
-- Parenthesis highlighting
["p00f/nvim-ts-rainbow"] = { after = "nvim-treesitter" },
-- Autoclose tags
["windwp/nvim-ts-autotag"] = { after = "nvim-treesitter" },
-- Context based commenting
["JoosepAlviste/nvim-ts-context-commentstring"] = { after = "nvim-treesitter" },
-- Syntax highlighting
["nvim-treesitter/nvim-treesitter"] = {
run = ":TSUpdate",
event = "BufEnter",
cmd = {
"TSInstall",
"TSInstallInfo",
"TSInstallSync",
"TSUninstall",
"TSUpdate",
"TSUpdateSync",
"TSDisableAll",
"TSEnableAll",
},
config = function() require "configs.treesitter" end,
},
-- Snippet collection
["rafamadriz/friendly-snippets"] = { opt = true },
-- Snippet engine
["L3MON4D3/LuaSnip"] = {
module = "luasnip",
wants = "friendly-snippets",
config = function() require "configs.luasnip" end,
},
-- Completion engine
["hrsh7th/nvim-cmp"] = {
event = "InsertEnter",
config = function() require "configs.cmp" end,
},
-- Snippet completion source
["saadparwaiz1/cmp_luasnip"] = {
after = "nvim-cmp",
config = function() astronvim.add_user_cmp_source "luasnip" end,
},
-- Buffer completion source
["hrsh7th/cmp-buffer"] = {
after = "nvim-cmp",
config = function() astronvim.add_user_cmp_source "buffer" end,
},
-- Path completion source
["hrsh7th/cmp-path"] = {
after = "nvim-cmp",
config = function() astronvim.add_user_cmp_source "path" end,
},
-- LSP completion source
["hrsh7th/cmp-nvim-lsp"] = {
after = "nvim-cmp",
config = function() astronvim.add_user_cmp_source "nvim_lsp" end,
},
-- Built-in LSP
["neovim/nvim-lspconfig"] = { config = function() require "configs.lspconfig" end },
-- Formatting and linting
["jose-elias-alvarez/null-ls.nvim"] = {
event = "BufEnter",
config = function() require "configs.null-ls" end,
},
-- Package Manager
["williamboman/mason.nvim"] = { config = function() require "configs.mason" end },
-- LSP manager
["williamboman/mason-lspconfig.nvim"] = {
after = { "mason.nvim", "nvim-lspconfig" },
config = function() require "configs.mason-lspconfig" end,
},
-- null-ls manager
["jayp0521/mason-null-ls.nvim"] = {
after = { "mason.nvim", "null-ls.nvim" },
config = function() require "configs.mason-null-ls" end,
},
-- LSP symbols
["stevearc/aerial.nvim"] = {
module = "aerial",
cmd = { "AerialToggle", "AerialOpen", "AerialInfo" },
config = function() require "configs.aerial" end,
},
-- Fuzzy finder
["nvim-telescope/telescope.nvim"] = {
cmd = "Telescope",
module = "telescope",
config = function() require "configs.telescope" end,
},
-- Fuzzy finder syntax support
["nvim-telescope/telescope-fzf-native.nvim"] = {
after = "telescope.nvim",
disable = vim.fn.executable "make" + vim.fn.executable "cmake" == 0,
run = vim.fn.executable "cmake" == 1
and "cmake -S. -Bbuild -DCMAKE_BUILD_TYPE=Release && cmake --build build --config Release && cmake --install build --prefix build"
or "make",
config = function() require("telescope").load_extension "fzf" end,
},
-- Git integration
["lewis6991/gitsigns.nvim"] = {
event = "BufEnter",
config = function() require "configs.gitsigns" end,
},
-- Start screen
["goolord/alpha-nvim"] = {
cmd = "Alpha",
module = "alpha",
config = function() require "configs.alpha" end,
},
-- Color highlighting
["NvChad/nvim-colorizer.lua"] = {
event = "BufEnter",
config = function() require "configs.colorizer" end,
},
-- Autopairs
["windwp/nvim-autopairs"] = {
event = "InsertEnter",
config = function() require "configs.autopairs" end,
},
-- Terminal
["akinsho/toggleterm.nvim"] = {
cmd = "ToggleTerm",
module = { "toggleterm", "toggleterm.terminal" },
config = function() require "configs.toggleterm" end,
},
-- Commenting
["numToStr/Comment.nvim"] = {
module = { "Comment", "Comment.api" },
keys = { "gc", "gb", "g<", "g>" },
config = function() require "configs.Comment" end,
},
-- Indentation
["lukas-reineke/indent-blankline.nvim"] = {
event = "BufEnter",
config = function() require "configs.indent-line" end,
},
-- Keymaps popup
["folke/which-key.nvim"] = {
module = "which-key",
config = function() require "configs.which-key" end,
},
-- Smooth escaping
["max397574/better-escape.nvim"] = {
event = "InsertCharPre",
config = function() require "configs.better_escape" end,
},
-- Get extra JSON schemas
["b0o/SchemaStore.nvim"] = { module = "schemastore" },
-- Session manager
["Shatur/neovim-session-manager"] = {
module = "session_manager",
cmd = "SessionManager",
event = "BufWritePost",
config = function() require "configs.session_manager" end,
},
}
if astronvim.updater.snapshot then
for plugin, options in pairs(astro_plugins) do
local pin = astronvim.updater.snapshot[plugin:match "/([^/]*)$"]
options.commit = pin and pin.commit or options.commit
end
end
local user_plugin_opts = astronvim.user_plugin_opts
local status_ok, packer = pcall(require, "packer")
if status_ok then
packer.startup {
function(use)
for key, plugin in pairs(user_plugin_opts("plugins.init", astro_plugins)) do
if type(key) == "string" and not plugin[1] then plugin[1] = key end
use(plugin)
end
end,
config = user_plugin_opts("plugins.packer", {
compile_path = astronvim.default_compile_path,
display = {
open_fn = function() return require("packer.util").float { border = "rounded" } end,
},
profile = {
enable = true,
threshold = 0.0001,
},
git = {
clone_timeout = 300,
subcommands = {
update = "pull --rebase",
},
},
auto_clean = true,
compile_on_sync = true,
}),
}
end