let s:Error = 1 let s:Warn = 2 let s:Info = 3 let s:Log = 4 function! s:response(type, message) abort return { \ 'server': 'server1', \ 'response': { \ 'method': 'window/showMessage', \ 'params': { \ 'type': a:type, \ 'message': a:message \ } \ } \ } endfunction Describe lsp#internal#show_message Before %bwipeout! let g:lsp_show_message_log_level = 'warning' call lsp#internal#show_message#_disable() call lsp#internal#show_message#_enable() End After all %bwipeout! let g:lsp_show_message_log_level = 'none' call lsp#internal#show_message#_disable() End It should show all messages when 'log' is set to g:lsp_show_message_log_level let g:lsp_show_message_log_level = 'log' redir => message_area call lsp#stream(1, s:response(s:Error, 'error message')) call lsp#stream(1, s:response(s:Warn, 'warn message')) call lsp#stream(1, s:response(s:Info, 'info message')) call lsp#stream(1, s:response(s:Log, 'log message')) call lsp#stream(1, s:response(s:Info, 'info message2')) call lsp#stream(1, s:response(s:Info, 'info message3')) redir END Assert Match(message_area, 'server1: error: error message') Assert Match(message_area, 'server1: warning: warn message') Assert Match(message_area, 'server1: info: info message') Assert Match(message_area, 'server1: log: log message') Assert Match(message_area, 'server1: info: info message2') Assert Match(message_area, 'server1: info: info message3') End It should filter shown messages by log level set to g:lsp_show_message_log_level let g:lsp_show_message_log_level = 'warning' redir => message_area call lsp#stream(1, s:response(s:Error, 'error message')) call lsp#stream(1, s:response(s:Warn, 'warn message')) call lsp#stream(1, s:response(s:Info, 'info message')) call lsp#stream(1, s:response(s:Log, 'log message')) call lsp#stream(1, s:response(s:Info, 'info message2')) call lsp#stream(1, s:response(s:Info, 'info message3')) redir END Assert Match(message_area, 'server1: error: error message') Assert Match(message_area, 'server1: warning: warn message') Assert NotMatch(message_area, 'server1: info: info message') Assert NotMatch(message_area, 'server1: log: log message') Assert NotMatch(message_area, 'server1: info: info message2') Assert NotMatch(message_area, 'server1: info: info message3') End It should show no message when 'none' is set to g:lsp_show_message_log_level let g:lsp_show_message_log_level = 'none' redir => message_area call lsp#stream(1, s:response(s:Error, 'error message')) call lsp#stream(1, s:response(s:Warn, 'warn message')) call lsp#stream(1, s:response(s:Info, 'info message')) call lsp#stream(1, s:response(s:Log, 'log message')) call lsp#stream(1, s:response(s:Info, 'info message2')) call lsp#stream(1, s:response(s:Info, 'info message3')) redir END Assert NotMatch(message_area, 'server1: error: error message') Assert NotMatch(message_area, 'server1: warning: warn message') Assert NotMatch(message_area, 'server1: info: info message') Assert NotMatch(message_area, 'server1: log: log message') Assert NotMatch(message_area, 'server1: info: info message2') Assert NotMatch(message_area, 'server1: info: info message3') End End