From f0f5d759e21858dc6a50f88ce80cdec24493a52c Mon Sep 17 00:00:00 2001 From: Sergey Matveev Date: Sat, 16 Jul 2022 16:22:09 +0300 Subject: [PATCH] Double formatting --- vim/.vim/autoload/fmt.vim | 36 +++++++++++++++++------------------- 1 file changed, 17 insertions(+), 19 deletions(-) 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 -- 2.44.0