aboutsummaryrefslogtreecommitdiff
path: root/autoload/prettier
diff options
context:
space:
mode:
authormitermayer <mitermayer.reis@gmail.com>2018-05-04 13:27:03 -0700
committermitermayer <mitermayer.reis@gmail.com>2018-05-04 13:27:03 -0700
commit866a7ac514ff70ce40476a792db2d979f6b20268 (patch)
tree76aa4093d388eaab5b34b51c9ffe629f12af0cba /autoload/prettier
parent4dfc50d5a689cf27d5915cbff8520388e517f0e5 (diff)
downloadvim-prettier-866a7ac514ff70ce40476a792db2d979f6b20268.tar.xz
Adding neovim runner module
Diffstat (limited to 'autoload/prettier')
-rw-r--r--autoload/prettier/job/async/neovim.vim43
-rw-r--r--autoload/prettier/job/runner.vim2
2 files changed, 44 insertions, 1 deletions
diff --git a/autoload/prettier/job/async/neovim.vim b/autoload/prettier/job/async/neovim.vim
index e69de29..9844579 100644
--- a/autoload/prettier/job/async/neovim.vim
+++ b/autoload/prettier/job/async/neovim.vim
@@ -0,0 +1,43 @@
+function! prettier#job#async#neovim#run(cmd, startSelection, endSelection) abort
+ let l:async_cmd = a:cmd
+
+ if has('win32') || has('win64')
+ let l:async_cmd = 'cmd.exe /c ' . a:cmd
+ endif
+
+ let l:lines = getline(a:startSelection, a:endSelection)
+ let l:dict = {
+ \ 'start': a:startSelection - 1,
+ \ 'end': a:endSelection,
+ \ 'buf_nr': bufnr('%'),
+ \ 'content': join(l:lines, "\n"),
+ \}
+ let l:out = []
+ let l:err = []
+
+ let l:job = jobstart([&shell, &shellcmdflag, l:async_cmd], {
+ \ 'on_stdout': {job_id, data, event -> extend(l:out, data)},
+ \ 'on_stderr': {job_id, data, event -> extend(l:err, data)},
+ \ 'on_exit': {job_id, status, event -> s:Prettier_Job_Nvim_Exit(status, l:dict, l:out, l:err)},
+ \ })
+ call jobsend(l:job, l:lines)
+ call jobclose(l:job, 'stdin')
+endfunction
+
+function! s:Prettier_Job_Nvim_Exit(status, info, out, err) abort
+ if a:status != 0
+ echoerr join(a:err, "\n")
+ return
+ endif
+
+ if len(a:out) == 0 | return | endif
+
+ let l:last = a:out[len(a:out) - 1]
+ let l:out = l:last ==? '' ? a:out[0:len(a:out) - 2] : a:out
+ if a:info.content == join(l:out, "\n")
+ " no change
+ return
+ endif
+
+ call nvim_buf_set_lines(a:info.buf_nr, a:info.start, a:info.end, 0, l:out)
+endfunction
diff --git a/autoload/prettier/job/runner.vim b/autoload/prettier/job/runner.vim
index b4b1f77..67cdb3c 100644
--- a/autoload/prettier/job/runner.vim
+++ b/autoload/prettier/job/runner.vim
@@ -27,7 +27,7 @@ function! s:asyncFormat(cmd, startSelection, endSelection) abort
if s:isAsyncVim
call prettier#job#async#vim#run(a:cmd, a:startSelection, a:endSelection)
elseif s:isNeoVim
- echom 'neovim'
+ call prettier#job#async#neovim#run(a:cmd, a:startSelection, a:endSelection)
else
call s:format(a:cmd, a:startSelection, a:endSelection)
endif