# Nvim-Utils: Utilities for writing Neovim plugins in Rust
[](https://deepsource.io/gh/willothy/nvim-utils/?ref=repository-badge)
[](https://deepsource.io/gh/willothy/nvim-utils/?ref=repository-badge)
Interacting with Neovim's lua api in Rust can be a bit of a pain. `nvim-utils` aims to make it easier and quicker to develop Neovim plugins in Rust by removing as much of the required boilerplate as possible, and implementing bindings for the `vim.*` lua api.
Using `nvim-utils` is as simple as adding it to your `Cargo.toml`:
```toml
[dependencies]
nvim-utils = "0.1.3"
```
or
```sh
cargo add nvim-utils
```
## Features
`nvim-utils` provides utilities for:
- Declaratively building lua modules using `mlua`
- Interacting with Neovim's lua api
- Logging using `vim.notify`
- Accessing common lua builtin functions like `require` and `print`
- And more to come!
## Documentation
Check out the examples for a simple example plugin, or my plugin [moveline](https://github.com/willothy/moveline.nvim) for a slightly more complex one.
Open [docs.rs/nvim-utils](https://docs.rs/nvim-utils) for the full documentation.
## Plugins using nvim-utils
If you build a plugin using `nvim-utils`, submit a PR or let me know and I'll list it here!
- [willothy/moveline.nvim](https://github.com/willothy/moveline.nvim): Easily move lines up and down