47 lines
1.2 KiB
VimL
47 lines
1.2 KiB
VimL
let s:events_pending = 0
|
|
|
|
function! kite#events#any_events_pending()
|
|
return s:events_pending > 0
|
|
endfunction
|
|
|
|
|
|
function! kite#events#event(action)
|
|
let filename = kite#utils#filepath(0)
|
|
|
|
if wordcount().bytes < kite#max_file_size()
|
|
let action = a:action
|
|
let text = kite#utils#buffer_contents()
|
|
else
|
|
let action = 'skip'
|
|
let text = ''
|
|
endif
|
|
|
|
let [sel_start, sel_end] = kite#utils#selected_region_characters()
|
|
if [sel_start, sel_end] == [-1, -1]
|
|
return
|
|
endif
|
|
let selections = [{ 'start': sel_start, 'end': sel_end, 'encoding': 'utf-32' }]
|
|
|
|
let json = json_encode({
|
|
\ 'source': 'vim',
|
|
\ 'filename': filename,
|
|
\ 'text': text,
|
|
\ 'action': action,
|
|
\ 'selections': selections,
|
|
\ 'editor_version': kite#utils#vim_version(),
|
|
\ 'plugin_version': kite#utils#plugin_version()
|
|
\ })
|
|
|
|
let s:events_pending += 1
|
|
|
|
call kite#client#post_event(json, function('kite#events#handler', [bufnr('')]))
|
|
endfunction
|
|
|
|
|
|
function! kite#events#handler(bufnr, response)
|
|
let s:events_pending -= 1
|
|
|
|
call setbufvar(a:bufnr, 'kite_skip', (a:response.status == 0 || a:response.status == 403))
|
|
endfunction
|
|
|