1
0
mirror of https://github.com/jdhao/nvim-config.git synced 2025-06-08 14:14:33 +02:00
jdhao-nvim-config/lua/plugins.lua
2021-08-13 02:05:13 +08:00

295 lines
8.8 KiB
Lua

local fn = vim.fn
local packer_install_dir = fn.stdpath('data')..'/site/pack/packer/start/packer.nvim'
local plug_url_format = ''
if vim.g.is_linux > 0 then
plug_url_format = 'https://hub.fastgit.org/%s'
else
plug_url_format = 'https://github.com/%s'
end
local packer_repo = string.format(plug_url_format, 'wbthomason/packer.nvim')
local install_cmd = string.format('10split |term git clone --depth=1 %s %s', packer_repo, packer_install_dir)
-- Auto-install packer in case it hasn't been installed.
if fn.glob(packer_install_dir) == '' then
vim.api.nvim_echo({{'Installing packer.nvim', 'Type'}}, true, {})
vim.cmd(install_cmd)
vim.cmd('packadd packer.nvim')
end
vim.cmd [[packadd packer.nvim]]
require('packer').startup(
{
function(use)
use 'wbthomason/packer.nvim'
-- nvim-lsp configuration
use {'neovim/nvim-lspconfig', config = [[require('config.lsp')]]}
-- auto-completion engine
use { 'hrsh7th/nvim-compe', event = 'InsertEnter *', config = [[require('config.compe')]] }
if (vim.g.is_mac > 0) or (vim.g.is_linux > 0) then
use {'nvim-treesitter/nvim-treesitter', run = ':TSUpdate', config = [[require('config.treesitter')]]}
end
-- Python syntax highlighting and more
if vim.g.is_win == 1 then
use {'numirias/semshi', ft = 'python', config = 'vim.cmd [[UpdateRemotePlugins]]'}
end
-- Python indent (follows the PEP8 style)
use {'Vimjas/vim-python-pep8-indent', ft = {'python', }}
-- Python-related text object
use {'jeetsukumaran/vim-pythonsense', ft = {'python'}}
use 'machakann/vim-swap'
-- IDE for Lisp
if fn.executable('sbcl') > 0 then
-- use 'kovisoft/slimv'
use {'vlime/vlime', rtp = 'vim/', ft={'lisp', }}
end
-- Super fast movement with vim-sneak
use 'justinmk/vim-sneak'
-- Clear highlight search automatically for you
use 'romainl/vim-cool'
-- Show current search term in different color
use 'PeterRincker/vim-searchlight'
-- Show match number for incsearch
use 'osyo-manga/vim-anzu'
-- Stay after pressing * and search selected text
use 'haya14busa/vim-asterisk'
-- File search, tag search and more
if vim.g.is_win == 1 then
use 'Yggdroot/LeaderF'
else
use {'Yggdroot/LeaderF', run = ':LeaderfInstallCExtension'}
end
-- Another similar plugin is command-t
-- use 'wincent/command-t'
-- Another grep tool (similar to Sublime Text Ctrl+Shift+F)
-- use 'dyng/ctrlsf.vim'
-- A grepping tool
-- use {'mhinz/vim-grepper', cmd = {'Grepper', '<plug>(GrepperOperator)'}}
-- A list of colorscheme plugin you may want to try. Find what suits you.
use 'lifepillar/vim-gruvbox8'
use 'ajmwagar/vim-deus'
use 'lifepillar/vim-solarized8'
use 'navarasu/onedark.nvim'
use 'sainnhe/edge'
use 'sainnhe/sonokai'
use 'sainnhe/gruvbox-material'
use 'shaunsingh/nord.nvim'
use 'NTBBloodbath/doom-one.nvim'
-- colorful status line and theme
use 'vim-airline/vim-airline-themes'
use 'vim-airline/vim-airline'
use {'romgrk/barbar.nvim', config = [[require('config.barbar')]]}
-- fancy start screen
use {'mhinz/vim-startify'}
use {'lukas-reineke/indent-blankline.nvim', config = [[require('config.indent-blankline')]]}
-- Highlight URLs inside vim
use 'itchyny/vim-highlighturl'
-- notification plugin
use {'rcarriga/nvim-notify', config = 'vim.notify = require("notify")'}
-- For Windows and Mac, we can open an URL in the browser. For Linux, it may
-- not be possible since we maybe in a server which disables GUI.
if (vim.g.is_win == 1) or (vim.g.is_mac == 1) then
-- open URL in browser
use 'tyru/open-browser.vim'
end
-- Only install these plugins if ctags are installed on the system
if fn.executable('ctags') > 0 then
-- plugin to manage your tags
use 'ludovicchabant/vim-gutentags'
-- show file tags in vim window
use 'liuchengxu/vista.vim'
end
-- Snippet engine and snippet template
use 'SirVer/ultisnips'
use {'honza/vim-snippets', event = {'InsertEnter'}}
-- Automatic insertion and deletion of a pair of characters
use 'Raimondi/delimitMate'
-- Comment plugin
use 'tpope/vim-commentary'
-- Multiple cursor plugin like Sublime Text?
-- use 'mg979/vim-visual-multi'
-- Autosave files on certain events
use '907th/vim-auto-save'
-- Show undo history visually
use 'simnalamburt/vim-mundo'
-- Manage your yank history
if (vim.g.is_win == 1) or (vim.g.is_mac == 1) then
use 'svermeulen/vim-yoink'
end
-- Handy unix command inside Vim (Rename, Move etc.)
use 'tpope/vim-eunuch'
-- Repeat vim motions
use 'tpope/vim-repeat'
-- Show the content of register in preview window
-- Plug 'junegunn/vim-peekaboo'
use {'jdhao/better-escape.vim', event = {'InsertEnter', }}
if vim.g.is_mac == 1 then
use {'lyokha/vim-xkbswitch', event = {'InsertEnter', }}
elseif vim.g.is_win == 1 then
use {'Neur1n/neuims', event = {'InsertEnter', }}
end
-- Syntax check and make
-- use 'neomake/neomake'
-- Auto format tools
use {'sbdchd/neoformat', cmd = {'Neoformat', }}
-- use 'Chiel92/vim-autoformat'
-- Show git change (change, delete, add) signs in vim sign column
use 'mhinz/vim-signify'
-- Another similar plugin
-- use 'airblade/vim-gitgutter'
-- Git command inside vim
use {'tpope/vim-fugitive', event = 'User InGitRepo'}
-- Better git log display
use {'rbong/vim-flog', require = 'tpope/vim-fugitive', cmd = {'Flog'}}
use {'kevinhwang91/nvim-bqf', config = [[require('config.bqf')]]}
-- Better git commit experience
use 'rhysd/committia.vim'
-- Another markdown plugin
use {'plasticboy/vim-markdown', ft = {'markdown', }}
-- Faster footnote generation
use {'vim-pandoc/vim-markdownfootnotes', ft = {'markdown', }}
-- Vim tabular plugin for manipulate tabular, required by markdown plugins
use {'godlygeek/tabular', cmd = {'Tabularize'}}
-- Markdown JSON header highlight plugin
use {'elzr/vim-json', ft = {'json', 'markdown'}}
-- Markdown previewing (only for Mac and Windows)
if (vim.g.is_win == 1) or (vim.g.is_mac == 1) then
use {'iamcco/markdown-preview.nvim', run = function() fn['mkdp#util#install']() end, ft = {'markdown'}}
end
if vim.g.is_mac == 1 then
use {'rhysd/vim-grammarous', ft = {'markdown', }}
end
use 'chrisbra/unicode.vim'
-- Additional powerful text object for vim, this plugin should be studied
-- carefully to use its full power
use 'wellle/targets.vim'
-- Plugin to manipulate character pairs quickly
-- use 'tpope/vim-surround'
use 'machakann/vim-sandwich'
-- Add indent object for vim (useful for languages like Python)
use 'michaeljsmith/vim-indent-object'
-- Only use these plugin on Windows and Mac and when LaTeX is installed
if ( vim.g.is_win == 1 or vim.g.is_mac ==1 ) and fn.executable('latex') > 0 then
-- vimtex use autoload feature of Vim, so it is not necessary to use `for`
-- keyword of vim-plug to try to lazy-load it,
-- see https://github.com/junegunn/vim-plug/issues/785
use {'lervag/vimtex', ft = {'tex', }}
-- use {'matze/vim-tex-fold', ft = {'tex', }}
-- use 'Konfekt/FastFold'
end
-- Since tmux is only available on Linux and Mac, we only enable these plugins
-- for Linux and Mac
if fn.executable('tmux') > 0 then
-- .tmux.conf syntax highlighting and setting check
use {'tmux-plugins/vim-tmux', ft = {'tmux', }}
end
-- Modern matchit implementation
use 'andymass/vim-matchup'
-- Smoothie motions
use 'psliwka/vim-smoothie'
use 'tpope/vim-scriptease'
-- Asynchronous command execution
use {'skywind3000/asyncrun.vim', opt = true, cmd = {'AsyncRun', }}
-- Another asynchronous plugin
-- Plug 'tpope/vim-dispatch'
use {'cespare/vim-toml', ft = {'toml',}}
-- Edit text area in browser using nvim
if (vim.g.is_win == 1) or (vim.g.is_mac == 1) then
use {'glacambre/firenvim', run = function() fn['firenvim#install'](0) end}
end
-- Debugger plugin
if (vim.g.is_win == 1) or (vim.g.is_linux == 1) then
use {'sakhnik/nvim-gdb', run = {'bash install.sh'}}
end
-- Session management plugin
use 'tpope/vim-obsession'
-- Calculate statistics for visual selection
use 'wgurecky/vimSum'
if vim.g.is_linux == 1 then
use 'ojroques/vim-oscyank'
end
-- REPL for nvim
use {'hkupty/iron.nvim', config = [[require('config.iron')]]}
-- Show register content
use "tversteeg/registers.nvim"
-- The missing auto-completion for cmdline!
use 'gelguy/wilder.nvim'
end,
config = {
max_jobs = 16,
git = {
default_url_format = plug_url_format
}
}
})