Files
org-vim/runtime/ftplugin/go.vim
Doug Kearns dcc4175284 runtime(go,gleam): Remove 'formatprg' from ftplugins
Effective use of 'formatprg' requires both an understanding of the
specific capabilities of the formatting tool and Vim's formatting
commands.  This is overly burdensome for some users.

Rather than address each complaint on a filetype by filetype basis,
remove 'formatprg' settings from all ftplugins.

It is expected that formatter plugins will be available in the near
future as a better solution. See #17145 (Add "formatter" feature using
"compiler" as a template).

Note: 'formatprg' will be removed from older ftplugins after the release
of Vim 9.2. The setting was added to the go and gleam ftplugins during
the current development cycle and have not been included in a Vim
release.

See: #18650 (rust.vim: stop setting formatprg to rustfmt)

closes: #19108

Signed-off-by: Doug Kearns <dougkearns@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-02-13 16:05:17 +00:00

87 lines
2.7 KiB
VimL

" Vim filetype plugin file
" Language: Go
" Maintainer: David Barnett (https://github.com/google/vim-ft-go is archived)
" Last Change: 2014 Aug 16
" 2024 Jul 16 by Vim Project (add recommended indent style)
" 2025 Mar 07 by Vim Project (add formatprg and keywordprg option #16804)
" 2025 Mar 18 by Vim Project (use :term for 'keywordprg' #16911)
" 2025 Apr 16 by Vim Project (set 'cpoptions' for line continuation, #17121)
" 2025 Jul 02 by Vim Project (add section movement mappings #17641)
" 2025 Jul 05 by Vim Project (update b:undo_ftplugin #17664)
" 2026 Feb 13 by Vim Project (remove formatprg #19108)
if exists('b:did_ftplugin')
finish
endif
let b:did_ftplugin = 1
let s:cpo_save = &cpo
set cpo&vim
setlocal formatoptions-=t
setlocal comments=s1:/*,mb:*,ex:*/,://
setlocal commentstring=//\ %s
setlocal keywordprg=:GoKeywordPrg
command! -buffer -nargs=* GoKeywordPrg call s:GoKeywordPrg()
let b:undo_ftplugin = 'setl fo< com< cms< kp<'
\ . '| delcommand -buffer GoKeywordPrg'
if get(g:, 'go_recommended_style', 1)
setlocal noexpandtab softtabstop=0 shiftwidth=0
let b:undo_ftplugin .= ' | setl et< sts< sw<'
endif
if !exists('*' . expand('<SID>') . 'GoKeywordPrg')
func! s:GoKeywordPrg()
let temp_isk = &l:iskeyword
setl iskeyword+=.
try
let cmd = 'go doc -C ' . shellescape(expand('%:h')) . ' ' . shellescape(expand('<cword>'))
if has('gui_running') || has('nvim')
exe 'hor term' cmd
else
exe '!' . cmd
endif
finally
let &l:iskeyword = temp_isk
endtry
endfunc
endif
if !exists("no_plugin_maps") && !exists("no_go_maps")
noremap <silent> <buffer> ]] <Cmd>call <SID>GoFindSection('next_start', v:count1)<CR>
noremap <silent> <buffer> ][ <Cmd>call <SID>GoFindSection('next_end', v:count1)<CR>
noremap <silent> <buffer> [[ <Cmd>call <SID>GoFindSection('prev_start', v:count1)<CR>
noremap <silent> <buffer> [] <Cmd>call <SID>GoFindSection('prev_end', v:count1)<CR>
let b:undo_ftplugin .= ''
\ . "| silent! exe 'unmap <buffer> ]]'"
\ . "| silent! exe 'unmap <buffer> ]['"
\ . "| silent! exe 'unmap <buffer> [['"
\ . "| silent! exe 'unmap <buffer> []'"
endif
function! <SID>GoFindSection(dir, count)
mark '
let c = a:count
while c > 0
if a:dir == 'next_start'
keepjumps call search('^\(type\|func\)\>', 'W')
elseif a:dir == 'next_end'
keepjumps call search('^}', 'W')
elseif a:dir == 'prev_start'
keepjumps call search('^\(type\|func\)\>', 'bW')
elseif a:dir == 'prev_end'
keepjumps call search('^}', 'bW')
endif
let c -= 1
endwhile
endfunction
let &cpo = s:cpo_save
unlet s:cpo_save
" vim: sw=2 sts=2 et