All patches and comments are welcome. Please squash your changes to logical
commits before using git-format-patch and git-send-email to
patches@git.madduck.net.
If you'd read over the Git project's submission guidelines and adhered to them,
I'd be especially grateful.
1 function! lsp#internal#show_message_request#_enable() abort
2 if !g:lsp_show_message_request_enabled | return | endif
3 let s:Dispose = lsp#callbag#pipe(
5 \ lsp#callbag#filter({x->
6 \ g:lsp_show_message_request_enabled &&
7 \ has_key(x, 'request') && !has_key(x, 'response') &&
8 \ has_key(x['request'], 'method') && x['request']['method'] ==# 'window/showMessageRequest'
10 \ lsp#callbag#map({x->s:show_message_request(x['server'], x['request'])}),
11 \ lsp#callbag#map({x->s:send_message_response(x['server'], x['request'], x['action'])}),
12 \ lsp#callbag#flatten(),
13 \ lsp#callbag#materialize(),
14 \ lsp#callbag#subscribe({ 'error': function('s:on_error') }),
18 function! lsp#internal#show_message_request#_disable() abort
19 if exists('s:Dispose')
25 function! s:on_error(e) abort
26 call lsp#log('lsp#internal#show_message_request error', a:e)
27 if exists('s:Dispose')
33 function! s:show_message_request(server_name, request) abort
34 let l:params = a:request['params']
36 let l:selected_action = v:null
38 if has_key(l:params, 'actions') && !empty(l:params['actions'])
39 let l:options = map(copy(l:params['actions']), {i, action ->
40 \ printf('%d - [%s] %s', i + 1, a:server_name, action['title'])
42 let l:index = inputlist([l:params['message']] + l:options)
43 if l:index > 0 && l:index <= len(l:index)
44 let l:selected_action = l:params['actions'][l:index - 1]
47 echom l:params['message']
50 return { 'server': a:server_name, 'request': a:request, 'action': l:selected_action }
53 function! s:send_message_response(server_name, request, action) abort
54 return lsp#request(a:server_name, {
55 \ 'id': a:request['id'],