Add channel support for neovim
This commit is contained in:
parent
29c26996fb
commit
04bb03da0a
3 changed files with 86 additions and 6 deletions
|
|
@ -25,11 +25,6 @@ _vimspector_session.OnChannelData( vim.eval( 'a:data' ) )
|
||||||
EOF
|
EOF
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
function! s:_OnServerError( channel, data ) abort
|
|
||||||
echom 'Channel received error: ' . a:data
|
|
||||||
redraw
|
|
||||||
endfunction
|
|
||||||
|
|
||||||
function! s:_OnClose( channel ) abort
|
function! s:_OnClose( channel ) abort
|
||||||
echom 'Channel closed'
|
echom 'Channel closed'
|
||||||
redraw
|
redraw
|
||||||
|
|
|
||||||
85
autoload/vimspector/internal/neochannel.vim
Normal file
85
autoload/vimspector/internal/neochannel.vim
Normal file
|
|
@ -0,0 +1,85 @@
|
||||||
|
" vimspector - A multi-language debugging system for Vim
|
||||||
|
" Copyright 2020 Ben Jackson
|
||||||
|
"
|
||||||
|
" Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
" you may not use this file except in compliance with the License.
|
||||||
|
" You may obtain a copy of the License at
|
||||||
|
"
|
||||||
|
" http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
"
|
||||||
|
" Unless required by applicable law or agreed to in writing, software
|
||||||
|
" distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
" WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
" See the License for the specific language governing permissions and
|
||||||
|
" limitations under the License.
|
||||||
|
|
||||||
|
|
||||||
|
" Boilerplate {{{
|
||||||
|
let s:save_cpo = &cpoptions
|
||||||
|
set cpoptions&vim
|
||||||
|
" }}}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
function! s:_OnEvent( chan_id, data, event ) abort
|
||||||
|
if a:data == ['']
|
||||||
|
echom 'Channel closed'
|
||||||
|
redraw
|
||||||
|
unlet s:ch
|
||||||
|
py3 _vimspector_session.OnServerExit( 0 )
|
||||||
|
else
|
||||||
|
py3 _vimspector_session.OnChannelData( '\n'.join( vim.eval( 'a:data' ) ) )
|
||||||
|
endif
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! vimspector#internal#neochannel#StartDebugSession( config ) abort
|
||||||
|
if exists( 's:ch' )
|
||||||
|
echom 'Not starging: Channel is already running'
|
||||||
|
redraw
|
||||||
|
return v:false
|
||||||
|
endif
|
||||||
|
|
||||||
|
let addr = 'localhost:' . a:config[ 'port' ]
|
||||||
|
|
||||||
|
let s:ch = sockconnect( 'tcp', addr, { 'on_data': funcref( 's:_OnEvent' ) } )
|
||||||
|
if s:ch <= 0
|
||||||
|
unlet s:ch
|
||||||
|
return v:false
|
||||||
|
endif
|
||||||
|
|
||||||
|
return v:true
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! vimspector#internal#neochannel#Send( msg ) abort
|
||||||
|
if ! exists( 's:ch' )
|
||||||
|
echom "Can't send message: Channel was not initialised correctly"
|
||||||
|
redraw
|
||||||
|
return 0
|
||||||
|
endif
|
||||||
|
|
||||||
|
call chansend( s:ch, a:msg )
|
||||||
|
return 1
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! vimspector#internal#neochannel#StopDebugSession() abort
|
||||||
|
if !exists( 's:ch' )
|
||||||
|
echom "Not stopping session: Channel doesn't exist"
|
||||||
|
redraw
|
||||||
|
return
|
||||||
|
endif
|
||||||
|
|
||||||
|
call chanclose( s:ch )
|
||||||
|
" It doesn't look like we get a callback after chanclos. Who knows if we will
|
||||||
|
" subsequently receive data callbacks.
|
||||||
|
call s:_OnEvent( s:ch, [ '' ], 'data' )
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! vimspector#internal#neochannel#Reset() abort
|
||||||
|
call vimspector#internal#neochannel#StopDebugSession()
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
" Boilerplate {{{
|
||||||
|
let &cpoptions=s:save_cpo
|
||||||
|
unlet s:save_cpo
|
||||||
|
" }}}
|
||||||
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
" vimspector - A multi-language debugging system for Vim
|
" vimspector - A multi-language debugging system for Vim
|
||||||
" Copyright 2018 Ben Jackson
|
" Copyright 2020 Ben Jackson
|
||||||
"
|
"
|
||||||
" Licensed under the Apache License, Version 2.0 (the "License");
|
" Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
" you may not use this file except in compliance with the License.
|
" you may not use this file except in compliance with the License.
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue