]> Sergey Matveev's repositories - dotfiles.git/commitdiff
Simpler and less disturbing :Fmt
authorSergey Matveev <stargrave@stargrave.org>
Thu, 30 Jun 2022 20:00:40 +0000 (23:00 +0300)
committerSergey Matveev <stargrave@stargrave.org>
Thu, 30 Jun 2022 20:00:40 +0000 (23:00 +0300)
vim/.vim/autoload/fmt.vim [new file with mode: 0644]
vim/.vim/ftplugin/c/fmt.vim
vim/.vim/ftplugin/go/fmt.vim

diff --git a/vim/.vim/autoload/fmt.vim b/vim/.vim/autoload/fmt.vim
new file mode 100644 (file)
index 0000000..5e7a001
--- /dev/null
@@ -0,0 +1,7 @@
+vim9script
+
+export def Do()
+    var view = winsaveview()
+    normal gg=G
+    winrestview(view)
+enddef
index 0c50d9977a56f68c69afd06ced2d6c98b9a1c2f1..2deba28cf39897bd58cb9c072cc5764a5dcd86f5 100644 (file)
@@ -1,2 +1,2 @@
 set equalprg=cfmt.sh
 set equalprg=cfmt.sh
-command! -buffer Fmt normal mtgg=G'tz.
+command! -buffer Fmt call fmt#Do()
index 9ed68ad6c401c3a65895925924562adb448db55c..feebf10deec01afa5885a46dfb7b429d6312a2b4 100644 (file)
@@ -1,67 +1,2 @@
-" Copyright 2011 The Go Authors. All rights reserved.
-" Use of this source code is governed by a BSD-style
-" license that can be found in the LICENSE file.
-"
-" fmt.vim: Vim command to format Go files with gofmt.
-"
-" This filetype plugin add a new commands for go buffers:
-"
-"   :Fmt
-"
-"       Filter the current Go buffer through gofmt.
-"       It tries to preserve cursor position and avoids
-"       replacing the buffer with stderr output.
-"
-" Options:
-"
-"   g:go_fmt_commands [default=1]
-"
-"       Flag to indicate whether to enable the commands listed above.
-"
-"   g:gofmt_command [default="gofmt"]
-"
-"       Flag naming the gofmt executable to use.
-"
-if exists("b:did_ftplugin_go_fmt")
-    finish
-endif
-
-if !exists("g:go_fmt_commands")
-    let g:go_fmt_commands = 1
-endif
-
-let g:gofmt_command = get(g:, "gofmt_command", "goimports")
-
-if g:go_fmt_commands
-    command! -buffer Fmt call s:GoFormat()
-endif
-
-function! s:GoFormat()
-    let view = winsaveview()
-    silent execute "%!" . g:gofmt_command
-    if v:shell_error
-        let errors = []
-        for line in getline(1, line('$'))
-            let tokens = matchlist(line, '^\(.\{-}\):\(\d\+\):\(\d\+\)\s*\(.*\)')
-            if !empty(tokens)
-                call add(errors, {"filename": @%,
-                                 \"lnum":     tokens[2],
-                                 \"col":      tokens[3],
-                                 \"text":     tokens[4]})
-            endif
-        endfor
-        if empty(errors)
-            % | " Couldn't detect gofmt error format, output errors
-        endif
-        undo
-        if !empty(errors)
-            call setqflist(errors, 'r')
-        endif
-        echohl Error | echomsg "Gofmt returned error" | echohl None
-    endif
-    call winrestview(view)
-endfunction
-
-let b:did_ftplugin_go_fmt = 1
-
-" vim:ts=4:sw=4:et
+set equalprg=goimports
+command! -buffer Fmt call fmt#Do()