Bindings to Vim objects, bindings to Vim channel commands, and a way to interact with Vim using Rust.
Aims to be able to eventually write standard plugins in Rust, and potentially services for Vim in Rust using channels.
Installation
Add this line to your dependencies section of your Cargo.toml file.
vii = "0.0.1"
Current interface is highly unstable.
Usage
Data Types
Working with Vim data types.
use DataType;
// Using a Vim data type
let vim_float = Float;
// Serializing for transmission to Vim
let serialized_float = vim_float.to_string; // "3.14"
let vim_string = String;
let serialized_string = vim_string.to_string; // "\"Hello World!\""
Support
List of data type support.
- Number
- String
- Funcref
- List
- Dictionary
- Work in progress using
HashMap<String, String>
- Work in progress using
- Float
- Boolean
- None
- Job
- Channel
- Blob
Vim Channels
Working with Vim channels (see :help channel.txt in Vim).
use ;
// Number of Lines in Current Buffer
// ["expr","line('$')"]
let expression = Expr;
// Number of Lines in Current Buffer
// ["call", "line", ["$"]]
let call = Call;
Contributing
If there are any features you would like added, found any potential bugs, or have any questions, then feel free to create an issue.
Testing
cargo test
Unittests are in the same file, next to the units they are testing (bottom). Integration tests are in /tests/.