Я пишу несколько тестов для плагина 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
.