首页 > 解决方案 > 捕获从 `job_start()` 显示的 `echon` 消息

问题描述

我正在为 Vim 插件编写一些测试,以确保某些行为正确完成。此插件echon除了echohl用于显示消息外。

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

在早于 8 的 Vim 版本中,在异步支持之前,我能够echon通过直接使用redir和调用插件来捕获字符串。使用 Vim 8 并让插件job_start与处理程序一起close_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显示实际值的目的。

标签: vim

解决方案


推荐阅读