This package has been deprecated

Author message:

Use "neovim" package

neovim2
TypeScript icon, indicating that this package has built-in type declarations

3.0.0 • Public • Published

neovim-client Build Status

WIP: Currently only works on node 8

Installation

npm install --global neovim2

Usage

This package exports a single attach() function which takes a pair of write/read streams and invokes a callback with a Nvim API object. This is similar to node-msgpack5rpc, but it provides an automatically generated API.

Example attach:

const cp = require('child_process');
const attach = require('neovim2').attach;
 
const nvim_proc = cp.spawn('nvim', ['-u', 'NONE', '-N', '--embed'], {});
 
// Attach to neovim process
const nvim = await attach(nvim_proc.stdin, nvim_proc.stdout);
await nvim.apiPromise;
nvim.command('vsp');
nvim.command('vsp');
nvim.command('vsp');
const windows = await nvim.listWins();
 
// expect(windows.length).toEqual(4);
// expect(windows[0] instanceof nvim.Window).toEqual(true);
// expect(windows[1] instanceof nvim.Window).toEqual(true);
 
await nvim.setCurrentWin(windows[2]);
const win = await nvim.getCurrentWin();
 
// expect(win).not.toEqual(windows[0]);
// expect(win).toEqual(windows[2]);
 
const buf = await nvim.getCurrentBuf();
// expect(buf instanceof nvim.Buffer).toEqual(true);
 
const lines = await buf.getLines(0, -1, true);
// expect(lines).toEqual(['']);
 
await buf.setLines(0, -1, true, ['line1', 'line2']);
const newLines = await buf.getLines(0, -1, true);
// expect(newLines).toEqual(['line1', 'line2']);
 
nvim.quit();
nvim_proc.kill();

A typescript declaration file is available as documentation of the API and also for typescript users that seek to use this library. Note that the interfaces are automatically generated at a certain point in time, and may not correspond exactly to the API of your installed Nvim.

Debugging / troubleshooting

Here are a few env vars you can set while starting neovim, that can help debugging and configuring logging:

NVIM_NODE_HOST_DEBUG

Will spawn the node process that calls neovim-client-host with --inspect-brk so you can have a debugger. Pair that with this Node Inspector Manager Chrome plugin

Logging

Logging is done using winston through the logger module. Plugins have console replaced with this interface.

NVIM_NODE_DEBUG_LEVEL

Sets the logging level for winston. Default is info, available levels are { error: 0, warn: 1, info: 2, verbose: 3, debug: 4, silly: 5 }

NVIM_NODE_LOG_FILE

Sets the log file path

Usage through node REPL

NVIM_LISTEN_ADDRESS

First, start Nvim with a known address (or use the $NVIM_LISTEN_ADDRESS of a running instance):

$ NVIM_LISTEN_ADDRESS=/tmp/nvim nvim In another terminal, connect a node REPL to Nvim

let nvim;
// `scripts/nvim` will detect if `NVIM_LISTEN_ADDRESS` is set and use that unix socket
// Otherwise will create an embedded `nvim` instance
require('neovim2/scripts/nvim').then((n) => nvim = n);
 
nvim.command('vsp');

The tests and scripts can be consulted for more examples.

Package Sidebar

Install

npm i neovim2

Weekly Downloads

2

Version

3.0.0

License

MIT

Last publish

Collaborators

  • billyvg