diff --git a/autoload/lsp.vim b/autoload/lsp.vim index 53efca9e..944d8b22 100644 --- a/autoload/lsp.vim +++ b/autoload/lsp.vim @@ -761,6 +761,8 @@ function! s:on_exit(server_name, id, data, event) abort if has_key(l:server, 'init_result') unlet l:server['init_result'] endif + call lsp#stream(1, { 'server': '$vimlsp', + \ 'response': { 'method': '$/vimlsp/lsp_server_exit', 'params': { 'server': a:server_name } } }) doautocmd User lsp_server_exit endif endfunction diff --git a/doc/vim-lsp.txt b/doc/vim-lsp.txt index e0e02ee8..ea48f875 100644 --- a/doc/vim-lsp.txt +++ b/doc/vim-lsp.txt @@ -1097,6 +1097,24 @@ au User lsp_setup call lsp#callbag#pipe( \ ) < +Custom vim-lsp notifications streams: +vimp-lsp events mimic lsp server notifications. +* `server` is always `$vimlsp`. +* `response` `method` is always prefixed with ``$/vimlsp/` + + +|$/vimlsp/lsp_server_exit| + This is similar to |lsp_server_exit| autocommand. + + Example: > + { + "server": "$vimlsp", + "response": { + "method": "$/vimlsp/lsp_server_exit", + "params": { "server": "$vimlsp" } + } + } +< lsp#stop_server({name-of-server}) *lsp#stop_server()* Used to stop the server.