可选
logger?: Logger可选
transport?: Transport受保护
_is受保护
client可选
data受保护
prefix受保护
request受保护
transport静态
只读
capture静态
capture设置或获取所有发射器的默认 captureRejection 值。
静态
default静态
只读
error此符号用于安装仅用于监控 'error'
事件的监听器。使用此符号安装的监听器会在调用常规 'error'
监听器之前被调用。
使用此符号安装监听器不会改变 'error'
事件发出后的行为,因此如果未安装常规 'error'
监听器,进程仍会崩溃。
检索 nvim API 信息
获取当前缓冲区
缓冲区句柄
设置当前缓冲区
获取有关所有打开的通道的信息
通道数组
获取定义的颜色映射
颜色映射
获取缓冲区局部 |user-commands| 的映射。
更改全局工作目录
目录路径
获取当前行
当前行字符串
设置当前行
行内容
获取当前模式。 |mode()| "blocking" 为 true 表示 Nvim 正在等待输入。
模式信息
getNamespaces()
的别名
获取 "runtimepath" 中包含的路径
路径列表
获取窗口标签页
包含窗口的标签页
设置当前的 tabpage
获取一个表示附加的 UI 的字典列表。
UI 字典数组 每个字典包含以下键: "height" UI 请求的高度 "width" UI 请求的宽度 "rgb" UI 是否使用 RGB 颜色(false 意味着 cterm 颜色) "ext_..." 请求的 UI 扩展,参见 |ui-options| "chan" 远程 UI 的通道 ID(在 TUI 中不存在)
获取当前窗口
窗口句柄
设置当前窗口
窗口句柄
如果缓冲区应该被分离,则返回 true
同步调用为名为 eventName
的事件注册的每个监听器,按注册顺序,将提供的参数传递给每个监听器。
如果事件有监听器,则返回 true
,否则返回 false
。
const EventEmitter = require('events');
const myEmitter = new EventEmitter();
// First listener
myEmitter.on('event', function firstListener() {
console.log('Helloooo! first listener');
});
// Second listener
myEmitter.on('event', function secondListener(arg1, arg2) {
console.log(`event with parameters ${arg1}, ${arg2} in second listener`);
});
// Third listener
myEmitter.on('event', function thirdListener(...args) {
const parameters = args.join(', ');
console.log(`event with parameters ${parameters} in third listener`);
});
console.log(myEmitter.listeners('event'));
myEmitter.emit('event', 1, 2, 3, 4, 5);
// Prints:
// [
// [Function: firstListener],
// [Function: secondListener],
// [Function: thirdListener]
// ]
// Helloooo! first listener
// event with parameters 1, 2 in second listener
// event with parameters 1, 2, 3, 4, 5 in third listener
Rest
...args: any[]返回一个数组,列出发射器已注册监听器的事件。数组中的值是字符串或Symbol
。
const EventEmitter = require('events');
const myEE = new EventEmitter();
myEE.on('foo', () => {});
myEE.on('bar', () => {});
const sym = Symbol('symbol');
myEE.on(sym, () => {});
console.log(myEE.eventNames());
// Prints: [ 'foo', 'bar', Symbol(symbol) ]
返回 EventEmitter
的当前最大监听器值,该值由 emitter.setMaxListeners(n)
设置或默认为 defaultMaxListeners。
从 GUI 发送鼠标事件。
调用是非阻塞的。它不等待任何结果操作,而是将事件排队以供事件循环尽快处理。
注意:目前不支持通过在循环中多次调用此方法来“脚本化”多个鼠标事件:中间鼠标位置将被忽略。它应该用于在 GUI 中实现实时鼠标输入。已弃用的伪键形式(“
鼠标按钮:其中之一为 "left"、"right"、"middle"、"wheel"。
对于普通按钮,其中之一为 "press"、"drag"、"release"。对于滚轮,其中之一为 "up"、"down"、"left"、"right"。
每个修饰符由单个字符表示的字符串。与按键相同,使用相同的规范,但“-” 分隔符是可选的,所以 "C-A-"、"c-a" 和 "CA" 都可以用来指定 Ctrl+Alt+单击。
如果客户端使用 |ui-multigrid|,则为网格编号,否则为 0。
鼠标行位置(以零为基准,就像重绘事件一样)
鼠标列位置(以零为基准,就像重绘事件一样)
将 listener
函数添加到名为 eventName
的事件的监听器数组的末尾。不会进行任何检查以查看是否已添加 listener
。多次调用传递相同组合的 eventName
和 listener
将导致 listener
被添加和调用多次。
server.on('connection', (stream) => {
console.log('someone connected!');
});
返回对 EventEmitter
的引用,以便可以将调用链接起来。
默认情况下,事件监听器按添加顺序调用。emitter.prependListener()
方法可以用作替代方法,将事件监听器添加到监听器数组的开头。
const myEE = new EventEmitter();
myEE.on('foo', () => console.log('a'));
myEE.prependListener('foo', () => console.log('b'));
myEE.emit('foo');
// Prints:
// b
// a
事件的名称。
回调函数
Rest
...args: any[]为名为 eventName
的事件添加一次性listener
函数。下次触发 eventName
时,此监听器将被移除,然后被调用。
server.once('connection', (stream) => {
console.log('Ah, we have our first user!');
});
返回对 EventEmitter
的引用,以便可以将调用链接起来。
默认情况下,事件监听器按添加顺序调用。emitter.prependOnceListener()
方法可以用作替代方法,将事件监听器添加到监听器数组的开头。
const myEE = new EventEmitter();
myEE.once('foo', () => console.log('a'));
myEE.prependOnceListener('foo', () => console.log('b'));
myEE.emit('foo');
// Prints:
// b
// a
事件的名称。
回调函数
Rest
...args: any[]将 listener
函数添加到名为 eventName
的事件的侦听器数组的_开头_。不会进行任何检查以查看 listener
是否已添加。多次调用传递相同组合的 eventName
和 listener
将导致 listener
被添加和调用多次。
server.prependListener('connection', (stream) => {
console.log('someone connected!');
});
返回对 EventEmitter
的引用,以便可以将调用链接起来。
事件的名称。
回调函数
Rest
...args: any[]为名为 eventName
的事件添加一个_一次性_ listener
函数到侦听器数组的_开头_。下次触发 eventName
时,此侦听器将被删除,然后调用。
server.prependOnceListener('connection', (stream) => {
console.log('Ah, we have our first user!');
});
返回对 EventEmitter
的引用,以便可以将调用链接起来。
事件的名称。
回调函数
Rest
...args: any[]返回名为 eventName
的事件的侦听器数组的副本,包括任何包装器(例如由 .once()
创建的包装器)。
const emitter = new EventEmitter();
emitter.once('log', () => console.log('log once'));
// Returns a new Array with a function `onceWrapper` which has a property
// `listener` which contains the original listener bound above
const listeners = emitter.rawListeners('log');
const logFnWrapper = listeners[0];
// Logs "log once" to the console and does not unbind the `once` event
logFnWrapper.listener();
// Logs "log once" to the console and removes the listener
logFnWrapper();
emitter.on('log', () => console.log('log persistently'));
// Will return a new Array with a single function bound by `.on()` above
const newListeners = emitter.rawListeners('log');
// Logs "log persistently" twice
newListeners[0]();
emitter.emit('log');
从名为 eventName
的事件的侦听器数组中删除指定的 listener
。
const callback = (stream) => {
console.log('someone connected!');
};
server.on('connection', callback);
// ...
server.removeListener('connection', callback);
removeListener()
最多会从侦听器数组中删除 listener
的一个实例。如果某个 listener
已多次添加到指定 eventName
的侦听器数组中,那么必须多次调用 removeListener()
来删除每个实例。
事件发出后,在发出时附加到该事件的所有侦听器将按顺序调用。这意味着在发出和最后一个侦听器完成执行_之后_,任何 removeListener()
或 removeAllListeners()
调用_之前_,都不会从正在进行的 emit()
中删除它们。后续事件的行为将按预期进行。
const myEmitter = new MyEmitter();
const callbackA = () => {
console.log('A');
myEmitter.removeListener('event', callbackB);
};
const callbackB = () => {
console.log('B');
};
myEmitter.on('event', callbackA);
myEmitter.on('event', callbackB);
// callbackA removes listener callbackB but it will still be called.
// Internal listener array at time of emit [callbackA, callbackB]
myEmitter.emit('event');
// Prints:
// A
// B
// callbackB is now removed.
// Internal listener array [callbackA]
myEmitter.emit('event');
// Prints:
// A
因为侦听器是使用内部数组管理的,所以调用此方法会更改_在_要删除的侦听器_之后_注册的任何侦听器的职位索引。这不会影响侦听器调用的顺序,但这意味着 emitter.listeners()
方法返回的侦听器数组的任何副本都需要重新创建。
当单个函数已多次作为处理程序添加到单个事件中时(如以下示例所示),removeListener()
将删除最近添加的实例。在示例中,将删除 once('ping')
侦听器。
const ee = new EventEmitter();
function pong() {
console.log('pong');
}
ee.on('ping', pong);
ee.once('ping', pong);
ee.removeListener('ping', pong);
ee.emit('ping');
ee.emit('ping');
返回对 EventEmitter
的引用,以便可以将调用链接起来。
Rest
...args: any[]在补全弹出菜单中选择一个项目。
如果 |ins-completion| 未激活,此 API 调用将被静默忽略。对使用 |ui-popupmenu| 控制弹出菜单的外部 UI 很有用。也可以在映射中使用;使用
要选择的项目的索引(从零开始)。值为 -1 表示不选择任何内容并恢复原始文本。
是否应将选择插入缓冲区。
完成补全并关闭弹出菜单。意味着 insert
。
可选参数。为将来使用保留。
设置当前窗口
窗口句柄
winClose
的公共别名
winConfig
的公共别名
Static
get返回名为 eventName
的事件的监听器数组的副本。
对于 EventEmitter
,这与在发射器上调用 .listeners
的行为完全相同。
对于 EventTarget
,这是获取事件目标的事件监听器的唯一方法。 这对于调试和诊断目的很有用。
const { getEventListeners, EventEmitter } = require('events');
{
const ee = new EventEmitter();
const listener = () => console.log('Events are fun');
ee.on('foo', listener);
getEventListeners(ee, 'foo'); // [listener]
}
{
const et = new EventTarget();
const listener = () => console.log('Events are fun');
et.addEventListener('foo', listener);
getEventListeners(et, 'foo'); // [listener]
}
Static
listener一个类方法,返回在给定 emitter
上注册的给定 eventName
的监听器数量。
const { EventEmitter, listenerCount } = require('events');
const myEmitter = new EventEmitter();
myEmitter.on('event', () => {});
myEmitter.on('event', () => {});
console.log(listenerCount(myEmitter, 'event'));
// Prints: 2
要查询的发射器
事件名称
Static
onconst { on, EventEmitter } = require('events');
(async () => {
const ee = new EventEmitter();
// Emit later on
process.nextTick(() => {
ee.emit('foo', 'bar');
ee.emit('foo', 42);
});
for await (const event of on(ee, 'foo')) {
// The execution of this inner block is synchronous and it
// processes one event at a time (even with await). Do not use
// if concurrent execution is required.
console.log(event); // prints ['bar'] [42]
}
// Unreachable here
})();
返回一个 AsyncIterator
,它迭代 eventName
事件。 如果 EventEmitter
发出 'error'
,它将抛出。 它在退出循环时删除所有监听器。 每次迭代返回的 value
是一个数组,由发出的事件参数组成。
可以使用 AbortSignal
取消等待事件
const { on, EventEmitter } = require('events');
const ac = new AbortController();
(async () => {
const ee = new EventEmitter();
// Emit later on
process.nextTick(() => {
ee.emit('foo', 'bar');
ee.emit('foo', 42);
});
for await (const event of on(ee, 'foo', { signal: ac.signal })) {
// The execution of this inner block is synchronous and it
// processes one event at a time (even with await). Do not use
// if concurrent execution is required.
console.log(event); // prints ['bar'] [42]
}
// Unreachable here
})();
process.nextTick(() => ac.abort());
正在监听的事件的名称
Optional
options: StaticEventEmitterOptions它迭代 emitter
发出的 eventName
事件
Static
once创建一个 Promise
,当 EventEmitter
发出给定事件时,该 Promise
将被兑现,或者如果 EventEmitter
在等待时发出 'error'
,则该 Promise
将被拒绝。 该 Promise
将使用发出给定事件的所有参数的数组解析。
此方法有意地是通用的,并且与 Web 平台 EventTarget 接口一起使用,该接口没有特殊的 'error'
事件语义,也不监听 'error'
事件。
const { once, EventEmitter } = require('events');
async function run() {
const ee = new EventEmitter();
process.nextTick(() => {
ee.emit('myevent', 42);
});
const [value] = await once(ee, 'myevent');
console.log(value);
const err = new Error('kaboom');
process.nextTick(() => {
ee.emit('error', err);
});
try {
await once(ee, 'myevent');
} catch (err) {
console.log('error happened', err);
}
}
run();
'error'
事件的特殊处理仅在使用 events.once()
等待另一个事件时使用。 如果使用 events.once()
来等待 'error'
事件本身,则将其视为任何其他类型的事件,没有特殊处理。
const { EventEmitter, once } = require('events');
const ee = new EventEmitter();
once(ee, 'error')
.then(([err]) => console.log('ok', err.message))
.catch((err) => console.log('error', err.message));
ee.emit('error', new Error('boom'));
// Prints: ok boom
可以使用 AbortSignal
取消等待事件
const { EventEmitter, once } = require('events');
const ee = new EventEmitter();
const ac = new AbortController();
async function foo(emitter, event, signal) {
try {
await once(emitter, event, { signal });
console.log('event emitted!');
} catch (error) {
if (error.name === 'AbortError') {
console.error('Waiting for the event was canceled!');
} else {
console.error('There was an error', error.message);
}
}
}
foo(ee, 'foo', ac.signal);
ac.abort(); // Abort waiting for the event
ee.emit('foo'); // Prints: Waiting for the event was canceled!
Optional
options: StaticEventEmitterOptionsOptional
options: StaticEventEmitterOptions
Neovim API