UNPKG

vim-wasm

Version:

Vim editor ported to WebAssembly

122 lines (114 loc) 3.59 kB
/* vi:set ts=4 sts=4 sw=4 et: * * VIM - Vi IMproved by Bram Moolenaar * Wasm support by rhysd <https://github.com/rhysd> * * Do ":help uganda" in Vim to read copying and usage conditions. * Do ":help credits" in Vim to see a list of people who contributed. * See README.txt for an overview of the Vim source code. */ /* * common.d.ts: Common type definitions for both main side and worker side */ interface DrawEvents { setColorFG: [/*code*/ string]; setColorBG: [/*code*/ string]; setColorSP: [/*code*/ string]; setFont: [/*name*/ string, /*size*/ number]; drawRect: [/*x*/ number, /*y*/ number, /*w*/ number, /*h*/ number, /*color*/ string, /*filled*/ boolean]; drawText: [ /*text*/ string, /*ch*/ number, /*lh*/ number, /*cw*/ number, /*x*/ number, /*y*/ number, /*bold*/ boolean, /*underline*/ boolean, /*undercurl*/ boolean, /*strike*/ boolean, ]; invertRect: [/*x*/ number, /*y*/ number, /*w*/ number, /*h*/ number]; imageScroll: [/*x*/ number, /*sy*/ number, /*dy*/ number, /*w*/ number, /*h*/ number]; } // 'setColorFG' | 'setColorBG' | ... type DrawEventMethod = keyof DrawEvents; // ['setColorFG', [string]] | ... type DrawEventMessage = { [K in DrawEventMethod]: [K, DrawEvents[K]] }[DrawEventMethod]; // { setColorFG(a0: string): void; ... } type DrawEventHandler = { [Name in DrawEventMethod]: (...args: DrawEvents[Name]) => void }; interface StartMessageFromMain { readonly kind: 'start'; readonly debug: boolean; readonly perf: boolean; readonly buffer: Int32Array; readonly clipboard: boolean; readonly canvasDomHeight: number; readonly canvasDomWidth: number; readonly persistent: string[]; readonly dirs: string[]; readonly files: { [fpath: string]: string }; readonly fetchFiles: { [fpath: string]: string }; readonly cmdArgs: string[]; } interface CmdlineResultFromWorker { readonly kind: 'cmdline:response'; readonly success: boolean; } interface SharedBufResponseFromWorker { readonly kind: 'shared-buf:response'; readonly buffer: SharedArrayBuffer; readonly bufId: number; } type MessageFromWorkerWithoutTimestamp = | { readonly kind: 'draw'; readonly event: DrawEventMessage; } | { readonly kind: 'error'; readonly message: string; } | { readonly kind: 'started'; } | { readonly kind: 'exit'; readonly status: number; } | { readonly kind: 'export'; readonly path: string; readonly contents: ArrayBuffer; } | { readonly kind: 'read-clipboard:request'; } | { readonly kind: 'write-clipboard'; readonly text: string; } | CmdlineResultFromWorker | SharedBufResponseFromWorker | { readonly kind: 'title'; readonly title: string; } | { readonly kind: 'eval'; readonly path: string; readonly contents: ArrayBuffer; } | { readonly kind: 'evalfunc'; readonly body: string; readonly argsJson: string | undefined; readonly notifyOnly: boolean; } | { readonly kind: 'done'; readonly status: EventStatusFromMain; }; type MessageFromWorker = MessageFromWorkerWithoutTimestamp & { timestamp?: number }; type MessageKindFromWorker = MessageFromWorker['kind']; type EventStatusFromMain = 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8;