295 lines
8.3 KiB
Lua
295 lines
8.3 KiB
Lua
local settings = require("user-conf")
|
|
local fn = vim.fn
|
|
|
|
local install_path = fn.stdpath("data") .. "/site/pack/packer/start/packer.nvim"
|
|
|
|
-- returns the require for use in `config` parameter of packer's use
|
|
-- expects the name of the config file
|
|
local function get_config(name)
|
|
return string.format('require("config/%s")', name)
|
|
end
|
|
|
|
-- bootstrap packer if not installed
|
|
if fn.empty(fn.glob(install_path)) > 0 then
|
|
fn.system({
|
|
"git",
|
|
"clone",
|
|
"https://github.com/wbthomason/packer.nvim",
|
|
install_path,
|
|
})
|
|
print("Installing packer...")
|
|
vim.api.nvim_command("packadd packer.nvim")
|
|
end
|
|
|
|
-- initialize and configure packer
|
|
local packer = require("packer")
|
|
|
|
packer.init({
|
|
enable = true, -- enable profiling via :PackerCompile profile=true
|
|
threshold = 0, -- the amount in ms that a plugins load time must be over for it to be included in the profile
|
|
max_jobs = 20, -- Limit the number of simultaneous jobs. nil means no limit. Set to 20 in order to prevent PackerSync form being "stuck" -> https://github.com/wbthomason/packer.nvim/issues/746
|
|
-- Have packer use a popup window
|
|
display = {
|
|
open_fn = function()
|
|
return require("packer.util").float({ border = "rounded" })
|
|
end,
|
|
},
|
|
})
|
|
|
|
packer.startup(function(use)
|
|
-- actual plugins list
|
|
use("wbthomason/packer.nvim")
|
|
|
|
-- telescope: highly extendable fuzzy finder over lists
|
|
-- https://github.com/nvim-telescope/telescope.nvim
|
|
use({
|
|
"nvim-telescope/telescope.nvim",
|
|
requires = { { "nvim-lua/popup.nvim" }, { "nvim-lua/plenary.nvim" } },
|
|
config = get_config("telescope"),
|
|
})
|
|
-- zoxide helps jump to folders
|
|
use({ "jvgrootveld/telescope-zoxide" })
|
|
-- An extension for telescope.nvim that allows you to switch between document's headings.
|
|
use({ "crispgm/telescope-heading.nvim" })
|
|
-- provide its users with the ability of picking symbols and insert them at point
|
|
use({ "nvim-telescope/telescope-symbols.nvim" })
|
|
use({ "nvim-telescope/telescope-file-browser.nvim" })
|
|
-- file browser extension for telescope.nvim. It supports synchronized creation, deletion, renaming, and moving of files and folders powered by telescope.nvim and plenary.nvim.
|
|
use({ "nvim-telescope/telescope-fzf-native.nvim", run = "make" })
|
|
-- Integration for packer.nvim with telescope.nvim.
|
|
use({ "nvim-telescope/telescope-packer.nvim" })
|
|
-- sets vim.ui.select to telescope. That means for example that neovim core stuff can fill the telescope picker
|
|
use({ "nvim-telescope/telescope-ui-select.nvim" })
|
|
-- File Explorer
|
|
use({ "kyazdani42/nvim-tree.lua", config = get_config("nvim-tree") })
|
|
-- Smoothly navigate between splits and panes
|
|
-- https://github.com/numToStr/Navigator.nvim
|
|
use({ "numToStr/Navigator.nvim", config = get_config("navigator") })
|
|
-- Neovim statusline
|
|
use({
|
|
"nvim-lualine/lualine.nvim",
|
|
config = get_config("lualine"),
|
|
event = "VimEnter",
|
|
requires = { "kyazdani42/nvim-web-devicons", opt = true },
|
|
})
|
|
-- A high-performance color highlighter for Neovim which has no external dependencies
|
|
use({
|
|
"norcalli/nvim-colorizer.lua",
|
|
event = "BufReadPre",
|
|
config = get_config("colorizer"),
|
|
})
|
|
-- autopair plugin for Neovim that supports multiple characters
|
|
use({ "windwp/nvim-autopairs", config = get_config("nvim-autopairs") })
|
|
-- fast parser for doing lookups per keystroke
|
|
use({
|
|
"nvim-treesitter/nvim-treesitter",
|
|
config = get_config("treesitter"),
|
|
run = ":TSUpdate",
|
|
})
|
|
|
|
-- use("nvim-treesitter/nvim-treesitter-textobjects")
|
|
|
|
-- use("RRethy/nvim-treesitter-endwise")
|
|
-- A completion engine plugin for neovim
|
|
use({
|
|
"hrsh7th/nvim-cmp",
|
|
requires = {
|
|
"hrsh7th/cmp-nvim-lsp",
|
|
"hrsh7th/cmp-buffer",
|
|
"hrsh7th/cmp-path",
|
|
"hrsh7th/cmp-cmdline",
|
|
"f3fora/cmp-spell",
|
|
"hrsh7th/cmp-calc",
|
|
"lukas-reineke/cmp-rg",
|
|
"hrsh7th/cmp-nvim-lsp-signature-help",
|
|
},
|
|
config = get_config("cmp"),
|
|
})
|
|
-- community driven repository for all kinds of snippets in all programming languages
|
|
use({ "rafamadriz/friendly-snippets" })
|
|
use({
|
|
"L3MON4D3/LuaSnip",
|
|
requires = "saadparwaiz1/cmp_luasnip",
|
|
config = get_config("luasnip"),
|
|
})
|
|
|
|
-- requirement for Neogit
|
|
use({
|
|
"sindrets/diffview.nvim",
|
|
cmd = {
|
|
"DiffviewOpen",
|
|
"DiffviewClose",
|
|
"DiffviewToggleFiles",
|
|
"DiffviewFocusFiles",
|
|
},
|
|
config = get_config("diffview"),
|
|
})
|
|
|
|
-- some tui? for git in neovim?
|
|
use({
|
|
"TimUntersberger/neogit",
|
|
requires = { "nvim-lua/plenary.nvim" },
|
|
cmd = "Neogit",
|
|
config = get_config("neogit"),
|
|
})
|
|
|
|
-- probably does git blame
|
|
use({ "f-person/git-blame.nvim", config = get_config("git-blame") })
|
|
|
|
use({
|
|
"lewis6991/gitsigns.nvim",
|
|
requires = { "nvim-lua/plenary.nvim" },
|
|
event = "BufReadPre",
|
|
config = get_config("gitsigns"),
|
|
})
|
|
|
|
-- make Neovim's quickfix window better
|
|
use({
|
|
"kevinhwang91/nvim-bqf",
|
|
requires = { { "junegunn/fzf", module = "nvim-bqf" }, config = get_config("nvim-bqf") },
|
|
})
|
|
|
|
-- tab labels
|
|
use({
|
|
"akinsho/nvim-bufferline.lua",
|
|
requires = "kyazdani42/nvim-web-devicons",
|
|
event = "BufReadPre",
|
|
config = get_config("bufferline"),
|
|
})
|
|
|
|
-- delete a buffer without messing up your window layout
|
|
use("famiu/bufdelete.nvim")
|
|
|
|
use({ "neovim/nvim-lspconfig", config = get_config("lsp") })
|
|
|
|
-- adds vscode-like pictograms
|
|
use({ "onsails/lspkind-nvim", requires = { "famiu/bufdelete.nvim" } })
|
|
|
|
-- use({
|
|
-- "jose-elias-alvarez/null-ls.nvim",
|
|
-- requires = { { "nvim-lua/plenary.nvim" } },
|
|
-- config = get_config("null-ls"),
|
|
-- })
|
|
|
|
-- A tree like view for symbols
|
|
use({
|
|
"simrat39/symbols-outline.nvim",
|
|
cmd = { "SymbolsOutline" },
|
|
config = get_config("symbols"),
|
|
})
|
|
|
|
-- adds indentation guides to all lines
|
|
use({
|
|
"lukas-reineke/indent-blankline.nvim",
|
|
event = "BufReadPre",
|
|
config = [[require("config/indent-blankline")]],
|
|
})
|
|
|
|
-- use({
|
|
-- "akinsho/nvim-toggleterm.lua",
|
|
-- keys = { "<C-n>", "<leader>fl", "<leader>gt" },
|
|
-- config = get_config("toggleterm"),
|
|
-- })
|
|
|
|
-- highlights todos
|
|
use({
|
|
"folke/todo-comments.nvim",
|
|
requires = "nvim-lua/plenary.nvim",
|
|
config = get_config("todo"),
|
|
})
|
|
|
|
-- some kinda project management
|
|
-- https://github.com/ahmedkhalf/project.nvim
|
|
use({ "ahmedkhalf/project.nvim", config = get_config("project") })
|
|
|
|
-- text highlighting
|
|
use("ironhouzi/starlite-nvim")
|
|
|
|
-- popup with possible key bindings of the command you started typing
|
|
use({ "folke/which-key.nvim", config = get_config("which-key") })
|
|
|
|
-- alignment
|
|
use("junegunn/vim-easy-align") -- no lua alternative, https://github.com/Vonr/align.nvim not working for me
|
|
|
|
--
|
|
-- literally a grammer checker
|
|
-- https://github.com/rhysd/vim-grammarous
|
|
use({ "rhysd/vim-grammarous", cmd = "GrammarousCheck" })
|
|
|
|
-- automatically highlighting other uses of the current word under the cursor
|
|
-- https://github.com/RRethy/vim-illuminate
|
|
use({ "RRethy/vim-illuminate" })
|
|
|
|
-- lf is a terminal file manager
|
|
use({
|
|
"ptzz/lf.vim",
|
|
requires = "voldikss/vim-floaterm",
|
|
config = get_config("lf"),
|
|
})
|
|
|
|
-- themes
|
|
if settings.theme == "nightfox" then
|
|
use({ "EdenEast/nightfox.nvim", config = get_config("nightfox") })
|
|
elseif settings.theme == "catppuccino" then
|
|
use({ "catppuccin/nvim", as = "catppuccin", config = get_config("catppuccin") })
|
|
else
|
|
use({ "catppuccin/nvim", as = "catppuccin", config = get_config("catppuccin") })
|
|
end
|
|
|
|
--
|
|
use({
|
|
"ThePrimeagen/harpoon",
|
|
requires = { "nvim-lua/plenary.nvim" },
|
|
config = get_config("harpoon"),
|
|
})
|
|
|
|
use({ "folke/zen-mode.nvim", cmd = "ZenMode", config = get_config("zen-mode") })
|
|
|
|
use({ "folke/twilight.nvim", config = get_config("twilight") })
|
|
|
|
use({ "tweekmonster/startuptime.vim" })
|
|
|
|
use({ "ggandor/lightspeed.nvim" })
|
|
|
|
use({ "ray-x/go.nvim", config = get_config("go"), ft = { "go" } })
|
|
|
|
use({ "LudoPinelli/comment-box.nvim", config = get_config("comment-box") })
|
|
|
|
use({ "rcarriga/nvim-notify", config = get_config("notify") })
|
|
|
|
use({ "echasnovski/mini.nvim", branch = "stable", config = get_config("mini") })
|
|
|
|
use({
|
|
"https://gitlab.com/yorickpeterse/nvim-window.git",
|
|
config = get_config("nvim-window"),
|
|
})
|
|
|
|
use({
|
|
"waylonwalker/Telegraph.nvim",
|
|
config = function()
|
|
require("telegraph").setup({})
|
|
end,
|
|
})
|
|
|
|
use({ "rhysd/conflict-marker.vim" })
|
|
|
|
use({ "edluffy/specs.nvim", config = get_config("specs") })
|
|
|
|
use({ "mfussenegger/nvim-ts-hint-textobject" })
|
|
|
|
use({
|
|
"goolord/alpha-nvim",
|
|
requires = { "kyazdani42/nvim-web-devicons" },
|
|
config = get_config("alpha-nvim"),
|
|
})
|
|
|
|
use({ "SmiteshP/nvim-navic" })
|
|
|
|
use({
|
|
"j-hui/fidget.nvim",
|
|
config = function()
|
|
require("fidget").setup({})
|
|
end,
|
|
})
|
|
end)
|