dotfiles/nvim/.config/nvim/lua/plugins.lua
Marty Oehme cd0d519a28
nvim: Move to lazy.nvim package manager
Migrated from packer.nvim to lazy.nvim - it gives really fast loading
times, easy lazy loading for any package and a snazzy package manager
overview page (invoked through `:Lazy`) which, importantly, all do not
rely on a compiled plugin list.

In essence it feels like an easier to manage and robust packer
replacement (even though packer is a really good manager as well) that
is well worth to switch to. Migration was pretty painless as well.

One thing I might do in the future is split up the plugin structure
itself from a single plugin list (which invokes plugin settings files)
to several files containing the plugins and their settings since it
might give more structure.
2023-02-10 09:15:56 +01:00

165 lines
7.4 KiB
Lua

local writing_ft = {"quarto", "pandoc", "markdown", "text", "tex"}
return {
-- vim plugs
-- essential
{'numToStr/Navigator.nvim', config = true}, -- allow seamless navigation between vim buffers and tmux/wezterm splits
{'jeffkreeftmeijer/vim-numbertoggle', event = "BufEnter"}, -- toggles numbers to absolute for all buffers but the current which is relative
{'ojroques/vim-oscyank', event = "VeryLazy"}, -- yank from *anywhere* (even ssh session) to clipboard, using :OSCYank
{'ggandor/lightspeed.nvim', event = "VeryLazy"}, -- jump between letters with improved fFtT quicksearch, mimics sneak
-- files
{'vifm/vifm.vim'}, -- integrate file manager
{
'lewis6991/gitsigns.nvim', -- show vcs changes on left-hand gutter
config = true,
event = "BufRead"
}, {
'norcalli/nvim-colorizer.lua', -- color hex, named colors in the correct preview scheme
config = true,
event = "VeryLazy"
}, {
'mhartington/formatter.nvim', -- auto formatting on save
config = function() require('plug._format') end,
event = "VeryLazy"
}, -- editing
{'kylechui/nvim-surround', version = '*', config = true, event = "VeryLazy"}, -- surround things with other things using ys/cs/ds
{
'monaqa/dial.nvim', -- extend the ^a / ^x possibilities to dates, hex, alphabets, markdown headers
event = "VeryLazy"
}, {
'tommcdo/vim-exchange', -- adds exchange operator with cx. common use: cxiw . on 2 words to switch
event = "VeryLazy"
}, {
'junegunn/vim-easy-align', -- Align tables and other alignable things
event = "VeryLazy"
}, -- colorschemes
{'norcalli/nvim-base16.lua'}, --
-- statusline
{
'nvim-lualine/lualine.nvim',
requires = {'kyazdani42/nvim-web-devicons', opt = true},
config = function() require('plug._lualine') end
}, -- writing
{'vim-pandoc/vim-pandoc-syntax', ft = writing_ft},
{'vim-pandoc/vim-pandoc', ft = writing_ft},
{'vim-pandoc/vim-criticmarkup', ft = writing_ft}, {
"quarto-dev/quarto-vim",
dependencies = {"vim-pandoc/vim-pandoc-syntax"},
ft = writing_ft
}, {'micarmst/vim-spellsync', event = "VeryLazy"}, -- personal dict improvements for git sync
{'folke/zen-mode.nvim', config = true, event = "VeryLazy"}, -- provide distraction free writing
{'folke/twilight.nvim', event = "VeryLazy"}, -- provide even distraction free-er writing (lowlight paragraphs)
{'alok/notational-fzf-vim', event = "VeryLazy"}, -- quickly search through the wiki
{'marty-oehme/zettelkasten.nvim', ft = writing_ft, event = "VeryLazy"}, -- simple static markdown linking
{
"iamcco/markdown-preview.nvim", -- generate an auto-updating html preview for md files
build = function() vim.fn["mkdp#util#install"]() end,
event = "VeryLazy"
}, -- languages
{'euclidianAce/BetterLua.vim', ft = 'lua'}, -- better syntax highlighting for lua
{'aliou/bats.vim', ft = {"bash", "sh", "zsh", "bats"}}, -- enable syntax for bats shell-code testing library
-- REPL work
{
'WhiteBlackGoose/magma-nvim-goose',
build = ":UpdateRemotePlugins",
config = function()
vim.g.magma_image_provider = "kitty"
vim.g.magma_automatically_open_output = false
end
}, -- nvim plugs
{
'echasnovski/mini.nvim',
version = '*',
config = function() require('plug._mini') end
}, {'Iron-E/nvim-cartographer'}, -- makes it easier to set mappings through lua
{
"akinsho/nvim-toggleterm.lua", -- simpler, programmable and multiple terminal toggling for nvim
config = function() require('plug._toggleterm') end,
event = "BufWinEnter"
},
{
"folke/which-key.nvim",
config = function() require("which-key").setup {} end
}, {
"nvim-neorg/neorg",
config = function() require("plug._neorg") end,
dependencies = {"nvim-lua/plenary.nvim"},
version = "*",
ft = "norg"
}, -- extensive organization plugin mimicking orgmode
-- fuzzy matching
{"nvim-telescope/telescope-fzf-native.nvim", build = 'make'}, {
"nvim-telescope/telescope.nvim",
dependencies = {"nvim-lua/popup.nvim", "nvim-lua/plenary.nvim"},
config = function() require('plug._telescope') end
}, -- snippeting
{"hrsh7th/vim-vsnip", event = "InsertEnter"}, -- snippet engine
{"rafamadriz/friendly-snippets", event = "InsertEnter"}, -- many snippets
-- treesitter
{
'nvim-treesitter/nvim-treesitter',
build = ':TSUpdate',
config = function() require('plug._treesitter') end
}, {'nvim-treesitter/playground', cmd = "TSPlaygroundToggle"}, -- interactively view and query the treesitter tree
{'romgrk/nvim-treesitter-context', event = "BufReadPre", config = true}, -- show current cursor context at top of buffer
{
'RRethy/nvim-treesitter-textsubjects', -- allows using . and ; to target treesitter branches
config = function()
require'nvim-treesitter.configs'.setup {
textsubjects = {
enable = true,
keymaps = {
['.'] = 'textsubjects-smart',
[';'] = 'textsubjects-container-outer'
}
}
}
end,
event = "BufReadPre"
}, {'p00f/nvim-ts-rainbow', event = "BufReadPre"}, -- rainbow brackets using treesitter
{'JoosepAlviste/nvim-ts-context-commentstring', event = "BufReadPre"}, -- improves commenting plugin above by using ts
{
'lewis6991/spellsitter.nvim', -- uses treesitter to highlight spelling errors
config = function() require('spellsitter').setup() end,
event = "BufReadPre"
}, -- lsp
{'neovim/nvim-lspconfig', event = "VeryLazy"}, -- some common language server configurations
{
'simrat39/symbols-outline.nvim',
config = function() require('symbols-outline').setup() end,
event = "VeryLazy"
}, -- vista-like outline view for code
{'ray-x/lsp_signature.nvim', event = "VeryLazy"},
{'ray-x/guihua.lua', build = 'cd lua/fzy && make', event = "VeryLazy"}, {
'ray-x/navigator.lua',
config = function() require('plug._lsp') end,
event = "VeryLazy"
}, -- and completion
{
'hrsh7th/nvim-cmp', -- simple completion engine built specifically for nvim and lsp
dependencies = {
'onsails/lspkind-nvim', 'andersevenrud/cmp-tmux', -- completion source from adjacent tmux panes
'hrsh7th/cmp-nvim-lsp', 'hrsh7th/cmp-buffer', 'hrsh7th/cmp-path',
'hrsh7th/cmp-cmdline', 'hrsh7th/cmp-vsnip', 'hrsh7th/cmp-nvim-lua',
'kdheepak/cmp-latex-symbols', 'ray-x/cmp-treesitter',
'f3fora/cmp-spell', 'cbarrete/completion-vcard'
},
event = "VeryLazy",
config = function() require('plug._cmp') end
}, {
'aspeddro/cmp-pandoc.nvim',
dependencies = {'nvim-lua/plenary.nvim', 'jbyuki/nabla.nvim'},
event = "VeryLazy"
}, {
"jghauser/papis.nvim",
after = {"telescope.nvim", "nvim-cmp"},
dependencies = {
"kkharji/sqlite.lua", "nvim-lua/plenary.nvim",
"MunifTanjim/nui.nvim", "nvim-treesitter/nvim-treesitter"
},
event = "VeryLazy",
rocks = {"lyaml"},
config = function() require("papis").setup({}) end
}
}