захват сообщений `echon`, отображаемых из` job_start () ` - PullRequest
0 голосов
/ 27 апреля 2018

Я пишу несколько тестов для плагина Vim, чтобы убедиться, что определенное поведение выполняется правильно. Этот плагин использует echon в дополнение к echohl для отображения сообщений.

Есть ли какая-либо собственная команда VimScript, которую я могу использовать для определения того, что в данный момент отображается как часть сообщения echon?

В версиях Vim ранее, чем до 8, до поддержки асинхронности, я смог захватить строку из 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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...