mirror of
https://github.com/neovim/neovim.git
synced 2026-05-06 16:29:57 -04:00
d49fe235f7
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 vim/vim#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: vim/vim#18650 (rust.vim: stop setting formatprg to rustfmt) closes: vim/vim#19108 https://github.com/vim/vim/commit/dcc41752843428142623b527433c551991ea7a31 Co-authored-by: Doug Kearns <dougkearns@gmail.com>
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
|