mirror of
https://github.com/vim/vim.git
synced 2026-02-15 03:36:03 +02:00
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>
87 lines
2.7 KiB
VimL
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
|