diff options
| author | mitermayer <mitermayer.reis@gmail.com> | 2018-05-04 14:00:00 -0700 |
|---|---|---|
| committer | mitermayer <mitermayer.reis@gmail.com> | 2019-08-25 21:11:49 -0700 |
| commit | 353960f263508ef466aa45337ceab7ac6dd25fc2 (patch) | |
| tree | 734cc0ddae501041b3863f1eb29fc05672ffd327 | |
| parent | 72436bd89e0c517a97895a7ac9a7fc9779175330 (diff) | |
| download | vim-prettier-353960f263508ef466aa45337ceab7ac6dd25fc2.tar.xz | |
Making sure only single job is executed at a time with neovim
| -rw-r--r-- | autoload/prettier.vim | 1 | ||||
| -rw-r--r-- | autoload/prettier/job/async/neovim.vim | 18 | ||||
| -rw-r--r-- | autoload/prettier/job/async/vim.vim | 23 |
3 files changed, 27 insertions, 15 deletions
diff --git a/autoload/prettier.vim b/autoload/prettier.vim index 9be30f5..c5e21e5 100644 --- a/autoload/prettier.vim +++ b/autoload/prettier.vim @@ -34,6 +34,7 @@ function! prettier#PrettierCli(user_input) abort endif endfunction +" Allows @format pragma support function! prettier#Autoformat(...) abort let l:curPos = getpos('.') let l:maxLineLookup = 50 diff --git a/autoload/prettier/job/async/neovim.vim b/autoload/prettier/job/async/neovim.vim index 9844579..b369406 100644 --- a/autoload/prettier/job/async/neovim.vim +++ b/autoload/prettier/job/async/neovim.vim @@ -1,8 +1,14 @@ +let s:prettier_job_running = 0 + function! prettier#job#async#neovim#run(cmd, startSelection, endSelection) abort - let l:async_cmd = a:cmd + if s:prettier_job_running == 1 + return + endif + + let l:cmd = a:cmd if has('win32') || has('win64') - let l:async_cmd = 'cmd.exe /c ' . a:cmd + let l:cmd = 'cmd.exe /c ' . a:cmd endif let l:lines = getline(a:startSelection, a:endSelection) @@ -15,16 +21,18 @@ function! prettier#job#async#neovim#run(cmd, startSelection, endSelection) abort let l:out = [] let l:err = [] - let l:job = jobstart([&shell, &shellcmdflag, l:async_cmd], { + let l:job = jobstart([&shell, &shellcmdflag, l: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)}, + \ 'on_exit': {job_id, status, event -> s:onExit(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 +function! s:onExit(status, info, out, err) abort + let s:prettier_job_running = 0 + if a:status != 0 echoerr join(a:err, "\n") return diff --git a/autoload/prettier/job/async/vim.vim b/autoload/prettier/job/async/vim.vim index 4db6522..ef9e37d 100644 --- a/autoload/prettier/job/async/vim.vim +++ b/autoload/prettier/job/async/vim.vim @@ -1,6 +1,12 @@ let s:prettier_job_running = 0 function! prettier#job#async#vim#run(cmd, startSelection, endSelection) abort + if s:prettier_job_running == 1 + return + endif + + let s:prettier_job_running = 1 + let l:cmd = a:cmd if has('win32') || has('win64') @@ -9,16 +15,13 @@ function! prettier#job#async#vim#run(cmd, startSelection, endSelection) abort let l:bufferName = bufname('%') - if s:prettier_job_running != 1 - let s:prettier_job_running = 1 - call job_start([&shell, &shellcmdflag, l:cmd], { - \ 'in_io': 'buffer', - \ 'in_top': a:startSelection, - \ 'in_bot': a:endSelection, - \ 'in_name': l:bufferName, - \ 'err_cb': {channel, msg -> s:onError(msg)}, - \ 'close_cb': {channel -> s:onClose(channel, a:startSelection, a:endSelection, l:bufferName)}}) - endif + call job_start([&shell, &shellcmdflag, l:cmd], { + \ 'in_io': 'buffer', + \ 'in_top': a:startSelection, + \ 'in_bot': a:endSelection, + \ 'in_name': l:bufferName, + \ 'err_cb': {channel, msg -> s:onError(msg)}, + \ 'close_cb': {channel -> s:onClose(channel, a:startSelection, a:endSelection, l:bufferName)}}) endfunction function! s:onError(msg) abort |
