nvimhost 1.0.0

Nvim (neovim) host provider and API client library.

To use this package, put the following dependency into your project's dependencies section:



Neovim (nvim) host provider and API client library written in D.


The following snippets show how you can use this library, check out the exaples for more information:

Plugin snippet demo

import nvimhost.plugin;
import nvimhost.api;

struct DemoPlugin {

    NvimAPI nvim;

    this(ref NvimAPI nvim) {
        this.nvim = nvim;

    // sync function with one argument
    string greet(string name) {
        return "Hello " ~ name;

    // sync function with multiple arguments
    int sumBeginToEnd(int begin, int end) {
        import std.range;
        import std.algorithm.iteration;
        import std.stdio;

        return cast(int) iota(begin, end).sum();

    // sync function calling async (non blocking) nvim functions
    int setVarValue(int i) {
        import std.conv;

        nvim.commandAsync("let g:test_var_value=" ~ i.to!string);
        return i;

    // async function calling both async and sync nvim functions
    @NvimFunc("SetVarValueAsync", Async)
    void setVarValueAsync(int i) {
        import std.conv;

        nvim.commandAsync("let g:testasync_var_value=" ~ i.to!string);
        nvim.command("echomsg 'hello world sync!'");


void main() {

    // make sure you source this .vim file in neovim, since this will bootstrap
    // the binary and register the plugin
    auto pluginDstFile = "~/.config/nvim/settings/demo-plugin.vim";
    // template instantiate DemoPlugin
    auto plugin = NvimPlugin!(DemoPlugin)("demo-plugin", pluginDstFile);
    // keep it running
    scope (exit) {

API client snippet demo

void main() {
    import std.stdio;
    import nvimhost.api : NvimAPI;
    auto nvim = NvimAPI();

    // Calling a simple command on Neovim
    nvim.command("echomsg 'hello world!'");

    // Iterating over loaded buffers
    auto buffers = nvim.vimGetBuffers();
    foreach (buffer; buffers) {
        writeln("buffer #", buffer);


  • Simply fetch it using dub. Whenever you import a module from the nvimhost package, it'll be built as a library by default.

dub fetch nvimhost
dub build --build=release


Unit tests

dub test

System tests

python -m pytest system_tests
  • @viniarck
  • viniarck@gmail.com
  • Vinicius S. Arcanjo
msgpack-d, vibe-core
1.1.1 2019-Jan-08
1.1.0 2019-Jan-06
1.0.0 2018-Dec-31
~master 2019-Jan-08
Show all 4 versions
Download Stats:
  • 0 downloads today

  • 1 downloads this week

  • 1 downloads this month

  • 3 downloads total

Short URL: