UNPKG

@chemzqm/neovim

Version:

NodeJS client API for vim9 and neovim

67 lines (66 loc) 2.23 kB
/** * 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; }