diff --git a/autoload/firenvim.vim b/autoload/firenvim.vim index f70e1d97..8b9a76e7 100644 --- a/autoload/firenvim.vim +++ b/autoload/firenvim.vim @@ -50,6 +50,25 @@ function! firenvim#hide_frame() abort call rpcnotify(firenvim#get_chan(), 'firenvim_hide_frame') endfunction +" Asks the browser extension to write to the text area. Either two or no +" arguments. +" 1st arg: string to write +" 2nd arg: position of the cursor +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", {