Skip to content

Commit

Permalink
Fix to detect channel disconnection on neovim #117
Browse files Browse the repository at this point in the history
  • Loading branch information
liquidz committed Mar 30, 2019
1 parent 42f6fec commit 7f20a80
Showing 1 changed file with 13 additions and 2 deletions.
15 changes: 13 additions & 2 deletions autoload/iced/di/channel/neovim.vim
Original file line number Diff line number Diff line change
Expand Up @@ -21,11 +21,22 @@ function! s:data_relay(data) abort
return a:data
endfunction

function! s:ch.on_data(ch_id, data, callback) abort
let handler = s:id_to_handler(a:ch_id)

" NOTE: This means EOF
" https://neovim.io/doc/user/channel.html
if a:data == ['']
call self.close(handler)
else
call a:callback(handler, s:data_relay(a:data))
endif
endfunction

function! s:ch.open(address, options) abort
let opts = {}
if has_key(a:options, 'callback')
let opts['on_data'] = {ch_id, data, _ ->
\ a:options.callback(s:id_to_handler(ch_id), s:data_relay(data))}
let opts['on_data'] = {ch_id, data, _ -> self.on_data(ch_id, data, a:options.callback)}
endif

let id = sockconnect('tcp', a:address, opts)
Expand Down

0 comments on commit 7f20a80

Please sign in to comment.