Skip to content
/ neopm Public

Plugin manager for neovim, pre-alpha stage.

License

Notifications You must be signed in to change notification settings

ii14/neopm

Repository files navigation

neopm

Plugin manager for neovim, pre-alpha stage. Expect breaking changes.

TODO

  • Install plugins
  • Update plugins
  • Automatic plugin patching
  • Documentation
  • Tests
  • Commands
  • Generate help tags
  • User interface
    • Error reporting
    • Fetch and review pending updates
    • Show git log
    • Show git reflog and restore updates
    • Show diffs
    • Manage patches
    • Overview
  • Plugin options
    • Plugin dependencies
    • Post load hook
    • Post install hook
    • Lazy loading
      • Filetype
      • Commands
      • Key mappings
      • Events
      • Functions
      • Lua modules
      • On demand
    • Clone
      • branch
      • tag
      • commit
  • Lockfile
  • Optional runtimepath optimization

Install

mkdir -p ~/.config/nvim/lua
git clone https://github.com/ii14/neopm ~/.config/nvim/lua/neopm

Managing plugins

-- can be a global or local variable, doesn't matter.
-- name can be anything, eg. you can use `p` or `P` if
-- you prefer it to be something shorter.
Plug = require('neopm')

-- default config:
-- Plug.config {
--   install_dir = vim.fn.stdpath('data')..'/neopm',
--   patch_dir   = vim.fn.stdpath('config')..'/patches',
--   git_command = 'git',
-- }

-- Editing --
Plug 'ii14/vim-surround'
Plug 'numToStr/Comment.nvim'
Plug 'tpope/vim-repeat'
Plug 'tpope/vim-abolish'
Plug 'wellle/targets.vim'
Plug 'tommcdo/vim-exchange'
Plug 'haya14busa/vim-asterisk'
Plug 'romainl/vim-cool'
Plug 'godlygeek/tabular'
Plug 'ii14/vim-bbye'
Plug 'mbbill/undotree'
Plug 'wellle/visual-split.vim'

-- Visual --
if vim.g.enable_lua_theme == nil then
  Plug 'itchyny/lightline.vim'
  Plug 'mengelbrecht/lightline-bufferline'
end
Plug 'lukas-reineke/indent-blankline.nvim'

-- File management --
Plug 'junegunn/fzf' { run = ':call fzf#install()' } -- post install hook, not implemented
Plug 'junegunn/fzf.vim' { depends = 'junegunn/fzf' } -- depend on other plugin
Plug 'lambdalisue/fern.vim' { depends = 'antoinemadec/FixCursorHold.nvim' }
Plug 'LumaKernel/fern-mapping-fzf.vim'
Plug 'bogado/file-line'

-- Autocompletion --
if vim.g.disable_lsp == nil then
  Plug 'neovim/nvim-lspconfig'
  Plug 'ii14/lsp-command'
  Plug 'jose-elias-alvarez/null-ls.nvim' { depends = 'nvim-lua/plenary.nvim' }
  Plug 'folke/trouble.nvim'
end
Plug 'hrsh7th/nvim-compe'
Plug 'L3MON4D3/LuaSnip'

-- Development --
Plug 'tpope/vim-fugitive'
Plug 'rbong/vim-flog'
Plug 'lewis6991/gitsigns.nvim' { depends = 'nvim-lua/plenary.nvim' }
Plug 'sindrets/diffview.nvim' { depends = 'nvim-lua/plenary.nvim' }
Plug 'tpope/vim-dispatch'
Plug 'ii14/exrc.vim'
if vim.env.NO_NREPL == nil then
  Plug 'ii14/nrepl.nvim'
end

-- Syntax --
Plug 'sheerun/vim-polyglot'
Plug 'fedorenchik/qt-support.vim'
Plug 'PotatoesMaster/i3-vim-syntax'
Plug 'ii14/vim-rasi'
Plug 'norcalli/nvim-colorizer.lua'
Plug 'milisims/nvim-luaref'

-- Misc --
Plug 'vimwiki/vimwiki' { on = 'VimwikiIndex', ft = { 'vimwiki', 'markdown' } }
Plug 'kizza/actionmenu.nvim'

-- Performance --
Plug 'tweekmonster/startuptime.vim'
Plug 'lewis6991/impatient.nvim'
Plug 'nathom/filetype.nvim'

-- checks if there are any uninstalled plugins
Plug.autoinstall(true)
-- finish it up by loading declared plugins
Plug.load()

Install and update plugins

:Neopm install
:Neopm update

Patching plugins

You can create automatically applied patches for plugins by saving diffs to the ~/.config/nvim/patches directory:

mkdir -p ~/.config/nvim/patches
cd ~/.local/share/nvim/neopm/some-vim-plugin
# make some edits
git diff > ~/.config/nvim/patches/some-vim-plugin.diff

This process will be more streamlined in the future.


Thanks to junegunn/vim-plug.

About

Plugin manager for neovim, pre-alpha stage.

Resources

License

Stars

Watchers

Forks