Hi, I’m trying to compile a general doc with all the ways to extend Neovim, while there’s a lot of documentation out there I feel it’s sort of fragmented. Here’s a general summary of what I’ve collected so far. If anyone knows of anything else or if I misrepresented anything, please let me know and I’ll update this. I’d like to see if I can get a page added to Neovim wiki sort of as a general overview so we can keep track of all the ways to Neovim can be extended.
Here’s a rough draft of what I have so far:
NeoVim Plugin Language Options
- VimScript
- Lua
- Providers - see
:h provider
- RemotePlugins - By using RPC any language can be used
- WASM? - While not supported, this would allow for plugins to be sandboxed and allow extending neovim with multiple languages through a single API. I only mention this since I saw a few issues opened about it and it sounded like this was a possibility in the future, what are your thoughts on removing this?
- Lua Transpilers - Lua has a few Transpilers, these are languages that will convert to Lua.
- Some are listed here - https://github.com/neovim/neovim/wiki/Related-projects#transpilers
- Vim9 script - Not supported, probably never will be from my understanding. This was implemented in Vim9 release. This was a new language implemented in VIm9 to speed up the language and try to make it more modern. It currently only works in Vim9+
APIS
- RPC/Remote plugins can use - Api - Neovim docs
- There’s client setup for multiple languages to aid in this process - Related projects · neovim/neovim Wiki · GitHub
- Providers API - Only a few languages are supported, from my understand this is the old way of doing it from VIM before RPC see
:help provider
for more information - Lua API
- VimScript API (eval) - Eval - Neovim docs
- LUA STDLIB - Since it’s Lua you have access to the whole language here Lua 5.1 Reference Manual - contents