diff --git a/autoload/elin/server.vim b/autoload/elin/server.vim index 1ce5e922..2a66927c 100644 --- a/autoload/elin/server.vim +++ b/autoload/elin/server.vim @@ -64,7 +64,10 @@ endfunction function! s:connect(port) abort try - let s:conn = elin#internal#rpc#connect(printf('localhost:%s', a:port)) + let s:conn = elin#internal#rpc#connect( + \ printf('localhost:%s', a:port), + \ {'on_close': funcref('s:on_close')}, + \ ) let s:port = a:port return v:true catch @@ -72,6 +75,14 @@ function! s:connect(port) abort endtry endfunction +function! s:on_close(...) abort + echom 'Elin server connection is closed' + if s:port is# v:null + return + endif + call timer_start(100, {_ -> elin#server#connect(s:port)}) +endfunction + function! elin#server#disconnect() abort if s:conn is# v:null return