Adapt AsyncLint to work with Neovim
This commit is contained in:
parent
6dda62b19e
commit
d94912fb43
2 changed files with 15 additions and 16 deletions
|
@ -6,12 +6,13 @@ augroup RUBY
|
||||||
end
|
end
|
||||||
let b:undo_ftplugin .= "augroup RUBY | au! | augroup END"
|
let b:undo_ftplugin .= "augroup RUBY | au! | augroup END"
|
||||||
|
|
||||||
comm! -buffer AsyncLint call AsyncLint(bufnr("%"), b:linter->substitute("%", expand("%"), "g"))
|
" comm! -buffer AsyncLint call AsyncLint(bufnr("%"), substitute(b:linter, "%", expand("%"), "g"))
|
||||||
|
comm! -buffer AsyncLint call AsyncLint(bufnr("%"), substitute(substitute(b:linter, "$0", "\\\\$0", "g"), "%", expand("%"), "g"))
|
||||||
let b:undo_ftplugin .= " | delcommand AsyncLint"
|
let b:undo_ftplugin .= " | delcommand AsyncLint"
|
||||||
comm! -buffer Lint silent exec "%!".b:linter->substitute("$0", "\\\\$0", "g")->substitute("%", expand("%"), "g")
|
comm! -buffer Lint silent exec "%!".substitute(substitute(b:linter, "$0", "\\\\$0", "g"), "%", expand("%"), "g")
|
||||||
let b:undo_ftplugin .= " | delcommand Lint"
|
let b:undo_ftplugin .= " | delcommand Lint"
|
||||||
|
|
||||||
let b:linter = "sh -c \"rubocop --auto-correct -o /dev/null --stdin % 2>/dev/null | awk 'BEGIN { header=0 } // && header==1 { print $0 } /^====================$/ { header=1 }'\""
|
let b:linter = "sh -c \"standardrb --auto-correct -o /dev/null --stdin % 2>/dev/null | awk 'BEGIN { header=0 } // && header==1 { print $0 } /^====================$/ { header=1 }'\""
|
||||||
let b:undo_ftplugin .= " | unlet b:linter"
|
let b:undo_ftplugin .= " | unlet b:linter"
|
||||||
|
|
||||||
set complete=t,.,kspell,i
|
set complete=t,.,kspell,i
|
||||||
|
|
|
@ -3,7 +3,7 @@ function s:async_lint_done(bufnr, buffer)
|
||||||
call getbufvar(a:bufnr, "")
|
call getbufvar(a:bufnr, "")
|
||||||
let l:pos = getcurpos()
|
let l:pos = getcurpos()
|
||||||
call deletebufline(bufname(a:bufnr), 1, "$")
|
call deletebufline(bufname(a:bufnr), 1, "$")
|
||||||
for line in a:buffer
|
for line in a:buffer[0:-2]
|
||||||
call appendbufline(bufname(a:bufnr), "$", line)
|
call appendbufline(bufname(a:bufnr), "$", line)
|
||||||
endfor
|
endfor
|
||||||
call deletebufline(bufname(a:bufnr), 1)
|
call deletebufline(bufname(a:bufnr), 1)
|
||||||
|
@ -22,13 +22,12 @@ endfun
|
||||||
|
|
||||||
function AsyncLint(bufnr, command)
|
function AsyncLint(bufnr, command)
|
||||||
if getbufvar(a:bufnr, "lint_job")==""
|
if getbufvar(a:bufnr, "lint_job")==""
|
||||||
let l:buffer = []
|
let l:job = jobstart(a:command, {
|
||||||
let l:job = job_start(a:command, {
|
\ "on_stdout": { id, text -> s:async_lint_done(a:bufnr, text) },
|
||||||
\ "in_io": "buffer", "in_name": bufname(a:bufnr),
|
\ "stdout_buffered": 1,
|
||||||
\ "out_io": "pipe",
|
|
||||||
\ "out_cb": { pipe, text -> add(l:buffer, text) },
|
|
||||||
\ "close_cb": { pipe -> s:async_lint_done(a:bufnr, l:buffer) }
|
|
||||||
\})
|
\})
|
||||||
|
call chansend(l:job, getline(1, line("$")))
|
||||||
|
call chanclose(l:job, "stdin")
|
||||||
call setbufvar(a:bufnr, "lint_job", l:job)
|
call setbufvar(a:bufnr, "lint_job", l:job)
|
||||||
end
|
end
|
||||||
endfun
|
endfun
|
||||||
|
@ -38,4 +37,3 @@ augroup ASYNC_LINT
|
||||||
au TextChangedI * call s:async_lint_abort(bufnr("%"))
|
au TextChangedI * call s:async_lint_abort(bufnr("%"))
|
||||||
au TextChangedP * call s:async_lint_abort(bufnr("%"))
|
au TextChangedP * call s:async_lint_abort(bufnr("%"))
|
||||||
augroup END
|
augroup END
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue