diff options
Diffstat (limited to 'autoload')
| -rw-r--r-- | autoload/prettier.vim | 2 | ||||
| -rw-r--r-- | autoload/prettier/job/async/vim.vim | 19 | ||||
| -rw-r--r-- | autoload/prettier/resolver/config.vim | 1 | ||||
| -rw-r--r-- | autoload/prettier/utils/buffer.vim | 11 |
4 files changed, 21 insertions, 12 deletions
diff --git a/autoload/prettier.vim b/autoload/prettier.vim index 0e8ade3..e2ba919 100644 --- a/autoload/prettier.vim +++ b/autoload/prettier.vim @@ -5,7 +5,7 @@ " Name Of File: prettier.vim " Description: A vim plugin wrapper for prettier, pre-configured with custom default prettier settings. " Maintainer: Mitermayer Reis <mitermayer.reis at gmail.com> -" Version: 0.2.6 +" Version: 0.2.7 " Usage: Use :help vim-prettier-usage, or visit https://github.com/prettier/vim-prettier " "========================================================================================================== diff --git a/autoload/prettier/job/async/vim.vim b/autoload/prettier/job/async/vim.vim index ab0fbef..29774b9 100644 --- a/autoload/prettier/job/async/vim.vim +++ b/autoload/prettier/job/async/vim.vim @@ -8,13 +8,15 @@ function! prettier#job#async#vim#run(cmd, startSelection, endSelection) abort let l:bufferName = bufname('%') - call job_start([&shell, &shellcmdflag, a:cmd], { - \ 'in_io': 'buffer', - \ 'in_top': a:startSelection, - \ 'in_bot': a:endSelection, - \ 'in_name': l:bufferName, + let l:job = job_start([&shell, &shellcmdflag, a:cmd], { + \ 'out_io': 'buffer', \ 'err_cb': {channel, msg -> s:onError(msg)}, \ 'close_cb': {channel -> s:onClose(channel, a:startSelection, a:endSelection, l:bufferName)}}) + + let l:stdin = job_getchannel(l:job) + + call ch_sendraw(l:stdin, join(getbufline(bufnr(l:bufferName), a:startSelection, a:endSelection), "\n")) + call ch_close_in(l:stdin) endfunction function! s:onError(msg) abort @@ -27,9 +29,9 @@ function! s:onClose(channel, startSelection, endSelection, bufferName) abort let l:currentBufferName = bufname('%') let l:isInsideAnotherBuffer = a:bufferName != l:currentBufferName ? 1 : 0 - while ch_status(a:channel) ==# 'buffered' - call add(l:out, ch_read(a:channel)) - endwhile + let l:buff = ch_getbufnr(a:channel, 'out') + let l:out = getbufline(l:buff, 2, '$') + execute 'bd!' . l:buff " we have no prettier output so lets exit if len(l:out) == 0 | return | endif @@ -37,6 +39,7 @@ function! s:onClose(channel, startSelection, endSelection, bufferName) abort " nothing to update if (prettier#utils#buffer#willUpdatedLinesChangeBuffer(l:out, a:startSelection, a:endSelection) == 0) let s:prettier_job_running = 0 + redraw! return endif diff --git a/autoload/prettier/resolver/config.vim b/autoload/prettier/resolver/config.vim index eae6725..3a1caf9 100644 --- a/autoload/prettier/resolver/config.vim +++ b/autoload/prettier/resolver/config.vim @@ -27,7 +27,6 @@ function! prettier#resolver#config#resolve(config, hasSelection, start, end) abo \ get(a:config, 'proseWrap', g:prettier#config#prose_wrap) . \ ' --stdin-filepath=' . \ simplify(expand('%:p')) . - \ ' --no-editorconfig '. \ ' --loglevel error '. \ ' --stdin ' " TODO diff --git a/autoload/prettier/utils/buffer.vim b/autoload/prettier/utils/buffer.vim index 258c615..c22fec7 100644 --- a/autoload/prettier/utils/buffer.vim +++ b/autoload/prettier/utils/buffer.vim @@ -9,10 +9,17 @@ function! prettier#utils#buffer#replace(lines, startSelection, endSelection) abo endif " delete all lines on the current buffer - silent! execute len(l:newBuffer) . ',' . line('$') . 'delete _' + silent! execute '%delete _' " replace all lines from the current buffer with output from prettier - call setline(1, l:newBuffer) + let l:idx = 0 + for l:line in l:newBuffer + silent! call append(l:idx, l:line) + let l:idx += 1 + endfor + + " delete trailing newline introduced by the above append procedure + silent! execute '$delete _' " Restore view call winrestview(l:winview) |
