diff --git a/autoload/firenvim.vim b/autoload/firenvim.vim index 0009148a..1f5e58ac 100644 --- a/autoload/firenvim.vim +++ b/autoload/firenvim.vim @@ -50,6 +50,22 @@ function! firenvim#hide_frame() abort call rpcnotify(firenvim#get_chan(), 'firenvim_hide_frame') endfunction +" Asks the browser extension to hide the firenvim frame +function! firenvim#write(...) abort + let l:text = "" + let l:cursor = [0, 0] + if len(a:000) == 0 + let l:text = nvim_buf_get_lines(0, 0, -1, 0) + let l:cursor = nvim_win_get_cursor(0) + elseif len(a:000) == 2 + let l:text = a:0 + let l:cursor = a:1 + else + throw "firenvim#write should be called either with 0 arguments or with 2 arguments (string, [number, number])" + endif + call rpcnotify(firenvim#get_chan(), 'firenvim_bufwrite', {"text": l:text, "cursor": l:cursor}) +endfunction + " Asks the browser extension to send one or multiple key events to the " underlying input field. function! firenvim#press_keys(...) abort diff --git a/src/frame.ts b/src/frame.ts index 80a10c67..c35db697 100644 --- a/src/frame.ts +++ b/src/frame.ts @@ -118,14 +118,7 @@ export const isReady = browser group = group, pattern = filename, callback = function(ev) - vim.fn.rpcnotify( - channel, - "firenvim_bufwrite", - { - text = vim.api.nvim_buf_get_lines(0, 0, -1, 0), - cursor = vim.api.nvim_win_get_cursor(0) - } - ) + vim.fn["firenvim#write"]() end }) vim.api.nvim_create_autocmd("VimLeave", {