Main Plugins
LSP is the future due to enormous momentum around VS Code actively shilled by Microsoft. This is OK because we will use these LSP-servers with our Neovim and Emacs to avoid Javascript bloatware.
There are tens of ready-made Neovim configurations, such as LunarVim/LunarVim
or
individual configs, like folke/dot
, to be ripped off. Notice that they
are all bloated and most of guys are just copy-pasting code from each other.
The nvim-starter
at Github is a decent step-by-step guide almost without bloat.
Unlike Emacs, the entry barrier for Neovim/Lua is very low, almost as for Javascript, so we have very crappy low effort code everywhere.
The real challenge is to give to your whole configuration the right, modular structure without too much of unnecessary wrapping.
So, what is good about Neovim
?
- built-in LSP client written in Lua
- all the LSP-servers other people use with
VSCode
tree-sitter
- the library and parsers- text-objects (absolutely crucial)
- completions (
nvim-cmp
) - snippets (
LuaSnip
) - a few really well-crafted plugins (
null_ls
, etc).
Most of all, we want, at least in a theory, to delegate all the tedious tasks to a competent, determined, well-educated and pricniple-guided maintainers (both of the editor and of the plugins), with habitual attention to details and focus on just right interfaces and APIs.
Yes, yes, I know lmao.
Notice that LSP-clients and the tree-sitter
are already parts of Emacs.
Notice also that we absolutely DO NOT WANT any kind of “modelines” (at all), “file
explorers”, “telescopes” and all the related bloat. vi
should start as an empty screen.
nvim-treesitter-textobjects
targets.vim
Comment.nvim
indent-blankline.nvim
gitsigns.nvim
LuaSnip
L3MON4D3/LuaSnip
- a snippet engine written in Lua. It has a nvim-cmp
integration, since it is a completion plugin which offer to activate particular snippets.
nvim-cmp
hrsh7th/nvim-cmp
- a completion plugin done right. It has its own modules.
nvim-lspconfig
neovim/nvim-lspconfig
- configures the builtin LSP client to properly
set up corresponding LSP-servers
null-ls
jose-elias-alvarez/null-ls.nvim
- this is a really good one. It wraps
individual linters and formatters, similar to what ale ALE does, but
acts as an LSP-server with these capabilities.
Yes, you could have more than one at the same buffer.
neodev
folke/neodev.nvim
- a plugin for editing your vim lua configs or developing
your own lua plugins. It leverages sumneko-lua
, which is a LSP-server
for Lua.