Vim 捕获从“job_start”()显示的“echon”消息`

Vim 捕获从“job_start”()显示的“echon”消息`,vim,Vim,我正在为Vim插件编写一些测试,以确保某些行为正确完成。该插件使用echon和echohl来显示消息 是否有任何本机VimScript命令可用于检测当前作为echon消息的一部分显示的内容 在8之前的Vim版本中,在异步支持之前,我能够通过使用redir并直接调用插件从echon捕获字符串。有了Vim 8,插件使用job\u start和close\u cb处理程序,echon是异步完成的,我再也不能用redir捕捉它了 echon调用很简单: redraw let messag

我正在为Vim插件编写一些测试,以确保某些行为正确完成。该插件使用
echon
echohl
来显示消息

是否有任何本机VimScript命令可用于检测当前作为
echon
消息的一部分显示的内容

在8之前的Vim版本中,在异步支持之前,我能够通过使用
redir
并直接调用插件从
echon
捕获字符串。有了Vim 8,插件使用
job\u start
close\u cb
处理程序,
echon
是异步完成的,我再也不能用
redir
捕捉它了

echon
调用很简单:

    redraw
    let message = "Unable to parse output. If using a plugin that alters the default output, consider disabling it. See :Pytest session"
    let length = strlen(message) + 1
    hi YellowBar ctermfg=black ctermbg=yellow guibg=#e5e500 guifg=black
    echohl YellowBar
    echon message . repeat(" ",&columns - length)
    echohl

理想情况下,我希望有一种方法来确保显示此消息,而不考虑异步行为。我正在考虑启用调试或测试设置,也可以将消息发送到<代码> ECHOM ,但这会有点真正确保“<代码> ECHON <代码> >的目的。

您是否考虑使用<代码>:帮助:ECHOMSG < /COD>而不是<代码>:帮助:ECHON < /代码>?如我在描述中所解释的,我不想改成echom,为什么?它们的工作原理相同,只是一个可以稍后检索,另一个不能。插件可以在每个缓冲区中运行几十次,这将在
:消息中添加大量的混乱。我不希望为了支持异步行为测试而必须这样做。