@chemzqm/neovim
Version:
NodeJS client API for vim9 and neovim
67 lines (66 loc) • 2.23 kB
TypeScript
/**
* Handles attaching transport
*/
import { EventEmitter } from 'events';
import Transport from '../transport/base';
import { AtomicResult } from '../types';
import { ILogger } from '../utils/logger';
import { Buffer } from './Buffer';
import { Neovim } from './Neovim';
import { Tabpage } from './Tabpage';
import { Window } from './Window';
export type Callback = (err?: Error | null, res?: any) => void;
export declare class AsyncResponse {
readonly requestId: number;
private cb;
private finished;
constructor(requestId: number, cb: Callback);
finish(err?: string | null, res?: any): void;
}
export interface NeovimClient extends Neovim, EventEmitter {
}
export declare class NeovimClient extends Neovim {
private logger;
readonly isVim: boolean;
private _isReady;
private requestId;
private responses;
private _channelId;
private attachedBuffers;
private _transport;
constructor(logger: ILogger, isVim: boolean);
get transport(): Transport;
echoError(msg: unknown): void;
logError(msg: string, ...args: any[]): void;
createBuffer(id: number): Buffer;
createWindow(id: number): Window;
createTabpage(id: number): Tabpage;
/**
* Invoke redraw on vim, must called when screen need update.
*/
redrawVim(force?: boolean): void;
/** Attaches msgpack to read/write streams * */
attach({ reader, writer, }: {
reader: NodeJS.ReadableStream;
writer: NodeJS.WritableStream;
}, requestApi?: boolean): void;
detach(): void;
get channelId(): Promise<number>;
private handleRequest;
sendAsyncRequest(method: string, args: any[]): Promise<any>;
private handleNotification;
requestApi(): Promise<any[]>;
private generateApi;
attachBufferEvent(bufnr: number, eventName: string, cb: Function): void;
/**
* Returns `true` if buffer should be detached
*/
detachBufferEvent(bufnr: number, eventName: string, cb: Function): void;
pauseNotification(): void;
resumeNotification(redrawVim?: boolean): Promise<AtomicResult>;
resumeNotification(redrawVim: boolean, notify: true): null;
/**
* @deprecated
*/
hasFunction(name: string): boolean;
}