aboutsummaryrefslogtreecommitdiff
path: root/autoload/prettier
diff options
context:
space:
mode:
authormitermayer <mitermayer.reis@gmail.com>2018-05-04 14:00:00 -0700
committermitermayer <mitermayer.reis@gmail.com>2018-05-04 14:00:00 -0700
commit51f1f8ed69c8106da665cfa46261caf9a6cbd728 (patch)
treeab74080949559a3a79c5e02ccd685ae09ab0a471 /autoload/prettier
parent866a7ac514ff70ce40476a792db2d979f6b20268 (diff)
downloadvim-prettier-51f1f8ed69c8106da665cfa46261caf9a6cbd728.tar.xz
Making sure only single job is executed at a time with neovim
Diffstat (limited to 'autoload/prettier')
-rw-r--r--autoload/prettier/job/async/neovim.vim18
-rw-r--r--autoload/prettier/job/async/vim.vim23
2 files changed, 26 insertions, 15 deletions
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