]> Cypherpunks repositories - gostls13.git/commitdiff
misc/vim: add plugin with Fmt command.
authorDmitry Chestnykh <dchest@gmail.com>
Wed, 13 Apr 2011 01:55:41 +0000 (11:55 +1000)
committerDavid Symonds <dsymonds@golang.org>
Wed, 13 Apr 2011 01:55:41 +0000 (11:55 +1000)
Fmt command filters the current Go buffer through gofmt.
It tries to preserve cursor position and avoids replacing
the buffer with stderr output.

R=golang-dev, dsymonds, niemeyer
CC=golang-dev
https://golang.org/cl/4382053

misc/vim/ftplugin/go/fmt.vim [new file with mode: 0644]

diff --git a/misc/vim/ftplugin/go/fmt.vim b/misc/vim/ftplugin/go/fmt.vim
new file mode 100644 (file)
index 0000000..18a2156
--- /dev/null
@@ -0,0 +1,30 @@
+" 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.
+"
+
+command! Fmt call s:GoFormat()
+
+function! s:GoFormat()
+    let view = winsaveview()
+    %!gofmt
+    if v:shell_error
+        %| " output errors returned by gofmt
+           " TODO(dchest): perhaps, errors should go to quickfix
+        undo
+       echohl Error | echomsg "Gofmt returned error" | echohl None
+    endif
+    call winrestview(view)
+endfunction
+
+" vim:ts=4:sw=4:et