From: Sergey Matveev Date: Sat, 16 Jul 2022 13:22:09 +0000 (+0300) Subject: Double formatting X-Git-Url: http://www.git.stargrave.org/?p=dotfiles.git;a=commitdiff_plain;h=f0f5d759e21858dc6a50f88ce80cdec24493a52c;ds=sidebyside Double formatting --- diff --git a/vim/.vim/autoload/fmt.vim b/vim/.vim/autoload/fmt.vim index 0aafcbc..0ba912b 100644 --- a/vim/.vim/autoload/fmt.vim +++ b/vim/.vim/autoload/fmt.vim @@ -1,23 +1,21 @@ vim9script export def Do() - var view = winsaveview() - silent execute ":%!" .. &equalprg - if v:shell_error != 0 - var errs = [] - for line in getline(1, line("$")) - var cols = matchlist(line, '^.*:\(\d\+\):\(\d\+\):\s*\(.*\)$') - if empty(cols) | continue | endif - errs = add(errs, { - filename: @%, - lnum: str2nr(cols[1]), - col: str2nr(cols[2]), - text: cols[3], - }) - endfor - silent undo - if !empty(errs) | setqflist(errs, "r") | endif - echohl Error | echomsg "fmt error" | echohl None - endif - winrestview(view) + var lines = [] + job_start(&equalprg, { + in_io: "buffer", in_buf: bufnr("%"), + callback: (chan, msg) => { + lines = add(lines, msg) + }, + exit_cb: (job, status) => { + if status != 0 + cgetexpr lines + copen + return + endif + var view = winsaveview() + silent execute ":%!" .. &equalprg + winrestview(view) + } + }) enddef