2014-10-31 17:30:24 -04:00
|
|
|
" Copyright 2013 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.
|
|
|
|
"
|
|
|
|
" go.vim: Vim filetype plugin for Go.
|
|
|
|
|
|
|
|
if exists("b:did_ftplugin")
|
2016-06-26 07:12:36 -04:00
|
|
|
finish
|
2014-10-31 17:30:24 -04:00
|
|
|
endif
|
|
|
|
let b:did_ftplugin = 1
|
|
|
|
|
2015-01-18 07:58:28 -05:00
|
|
|
let b:undo_ftplugin = "setl fo< com< cms<"
|
2014-10-31 17:30:24 -04:00
|
|
|
|
|
|
|
setlocal formatoptions-=t
|
|
|
|
|
|
|
|
setlocal comments=s1:/*,mb:*,ex:*/,://
|
|
|
|
setlocal commentstring=//\ %s
|
|
|
|
|
|
|
|
setlocal noexpandtab
|
|
|
|
|
|
|
|
compiler go
|
|
|
|
|
|
|
|
" Set gocode completion
|
|
|
|
setlocal omnifunc=go#complete#Complete
|
|
|
|
|
2015-01-18 07:58:28 -05:00
|
|
|
if get(g:, "go_doc_keywordprg_enabled", 1)
|
2016-06-26 07:12:36 -04:00
|
|
|
" keywordprg doesn't allow to use vim commands, override it
|
|
|
|
nnoremap <buffer> <silent> K :GoDoc<cr>
|
2014-10-31 17:30:24 -04:00
|
|
|
endif
|
|
|
|
|
2015-01-18 07:58:28 -05:00
|
|
|
if get(g:, "go_def_mapping_enabled", 1)
|
2016-06-26 07:12:36 -04:00
|
|
|
" these are default Vim mappings, we're overriding them to make them
|
|
|
|
" useful again for Go source code
|
|
|
|
nnoremap <buffer> <silent> gd :GoDef<cr>
|
|
|
|
nnoremap <buffer> <silent> <C-]> :GoDef<cr>
|
|
|
|
nnoremap <buffer> <silent> <C-w><C-]> :<C-u>call go#def#Jump("split")<CR>
|
|
|
|
nnoremap <buffer> <silent> <C-w>] :<C-u>call go#def#Jump("split")<CR>
|
|
|
|
nnoremap <buffer> <silent> <C-t> :<C-U>call go#def#StackPop(v:count1)<cr>
|
2015-01-18 07:58:28 -05:00
|
|
|
endif
|
2014-10-31 17:30:24 -04:00
|
|
|
|
2015-01-18 07:58:28 -05:00
|
|
|
if get(g:, "go_textobj_enabled", 1)
|
2016-06-26 07:12:36 -04:00
|
|
|
onoremap <buffer> <silent> af :<c-u>call go#textobj#Function('a')<cr>
|
|
|
|
onoremap <buffer> <silent> if :<c-u>call go#textobj#Function('i')<cr>
|
2016-03-20 14:01:44 -04:00
|
|
|
|
2016-06-26 07:12:36 -04:00
|
|
|
xnoremap <buffer> <silent> af :<c-u>call go#textobj#Function('a')<cr>
|
|
|
|
xnoremap <buffer> <silent> if :<c-u>call go#textobj#Function('i')<cr>
|
2016-03-20 14:01:44 -04:00
|
|
|
|
2016-06-26 07:12:36 -04:00
|
|
|
" Remap ]] and [[ to jump betweeen functions as they are useless in Go
|
|
|
|
nnoremap <buffer> <silent> ]] :<c-u>call go#textobj#FunctionJump('n', 'next')<cr>
|
|
|
|
nnoremap <buffer> <silent> [[ :<c-u>call go#textobj#FunctionJump('n', 'prev')<cr>
|
2016-03-20 14:01:44 -04:00
|
|
|
|
2016-06-26 07:12:36 -04:00
|
|
|
onoremap <buffer> <silent> ]] :<c-u>call go#textobj#FunctionJump('o', 'next')<cr>
|
|
|
|
onoremap <buffer> <silent> [[ :<c-u>call go#textobj#FunctionJump('o', 'prev')<cr>
|
2016-03-20 14:01:44 -04:00
|
|
|
|
2016-06-26 07:12:36 -04:00
|
|
|
xnoremap <buffer> <silent> ]] :<c-u>call go#textobj#FunctionJump('v', 'next')<cr>
|
|
|
|
xnoremap <buffer> <silent> [[ :<c-u>call go#textobj#FunctionJump('v', 'prev')<cr>
|
2014-10-31 17:30:24 -04:00
|
|
|
endif
|
|
|
|
|
2016-08-20 07:23:52 -04:00
|
|
|
if get(g:, "go_auto_type_info", 0) || get(g:, "go_auto_sameids", 0)
|
2016-06-26 07:12:36 -04:00
|
|
|
setlocal updatetime=800
|
2014-10-31 17:30:24 -04:00
|
|
|
endif
|
|
|
|
|
2016-06-26 07:12:36 -04:00
|
|
|
" vim: sw=2 ts=2 et
|