From afce081b90c1e2c50c3507758c7558a0dfa1f33e Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Sat, 27 Apr 2024 15:18:03 +0200 Subject: Adding upstream version 2:8.2.2434. Signed-off-by: Daniel Baumann --- runtime/ftplugin/vim.vim | 115 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 115 insertions(+) create mode 100644 runtime/ftplugin/vim.vim (limited to 'runtime/ftplugin/vim.vim') diff --git a/runtime/ftplugin/vim.vim b/runtime/ftplugin/vim.vim new file mode 100644 index 0000000..d39ad95 --- /dev/null +++ b/runtime/ftplugin/vim.vim @@ -0,0 +1,115 @@ +" Vim filetype plugin +" Language: Vim +" Maintainer: Bram Moolenaar +" Last Change: 2021 Jan 23 + +" Only do this when not done yet for this buffer +if exists("b:did_ftplugin") + finish +endif + +" Don't load another plugin for this buffer +let b:did_ftplugin = 1 + +let s:cpo_save = &cpo +set cpo&vim + +if !exists('*VimFtpluginUndo') + func VimFtpluginUndo() + setl fo< isk< com< tw< commentstring< + if exists('b:did_add_maps') + silent! nunmap [[ + silent! vunmap [[ + silent! nunmap ]] + silent! vunmap ]] + silent! nunmap [] + silent! vunmap [] + silent! nunmap ][ + silent! vunmap ][ + silent! nunmap ]" + silent! vunmap ]" + silent! nunmap [" + silent! vunmap [" + endif + unlet! b:match_ignorecase b:match_words b:match_skip b:did_add_maps + endfunc +endif + +let b:undo_ftplugin = "call VimFtpluginUndo()" + +" Set 'formatoptions' to break comment lines but not other lines, +" and insert the comment leader when hitting or using "o". +setlocal fo-=t fo+=croql + +" To allow tag lookup via CTRL-] for autoload functions, '#' must be a +" keyword character. E.g., for netrw#Nread(). +setlocal isk+=# + +" Use :help to lookup the keyword under the cursor with K. +setlocal keywordprg=:help + +if "\n" .. getline(1, 10)->join("\n") =~# '\n\s*vim9\%[script]\>' + " Set 'comments' to format dashed lists in comments + setlocal com=sO:#\ -,mO:#\ \ ,eO:##,:# + " Comments starts with # in Vim9 script + setlocal commentstring=#%s +else + setlocal com=sO:\"\ -,mO:\"\ \ ,:\" + " Comments starts with a double quote in legacy script + setlocal commentstring=\"%s +endif + + +" Format comments to be up to 78 characters long +if &tw == 0 + setlocal tw=78 +endif + +if !exists("no_plugin_maps") && !exists("no_vim_maps") + let b:did_add_maps = 1 + + " Move around functions. + nnoremap [[ m':call search('^\s*\(fu\%[nction]\\|def\)\>', "bW") + vnoremap [[ m':exe "normal! gv"call search('^\s*\(fu\%[nction]\\|def\)\>', "bW") + nnoremap ]] m':call search('^\s*\(fu\%[nction]\\|def\)\>', "W") + vnoremap ]] m':exe "normal! gv"call search('^\s*\(fu\%[nction]\\|def\)\>', "W") + nnoremap [] m':call search('^\s*end\(f\%[unction]\\|def\)\>', "bW") + vnoremap [] m':exe "normal! gv"call search('^\s*end\(f\%[unction]\\|def\)\>', "bW") + nnoremap ][ m':call search('^\s*end\(f\%[unction]\\|def\)\>', "W") + vnoremap ][ m':exe "normal! gv"call search('^\s*end\(f\%[unction]\\|def\)\>', "W") + + " Move around comments + nnoremap ]" :call search('^\(\s*".*\n\)\@ + vnoremap ]" :exe "normal! gv"call search('^\(\s*".*\n\)\@ + nnoremap [" :call search('\%(^\s*".*\n\)\%(^\s*"\)\@!', "bW") + vnoremap [" :exe "normal! gv"call search('\%(^\s*".*\n\)\%(^\s*"\)\@!', "bW") +endif + +" Let the matchit plugin know what items can be matched. +if exists("loaded_matchit") + let b:match_ignorecase = 0 + " "func" can also be used as a type: + " var Ref: func + " or to list functions: + " func name + " require a parenthesis following, then there can be an "endfunc". + let b:match_words = + \ '\<\%(fu\%[nction]\|def\)\s\+\S\+(:\:\<\%(endf\%[unction]\|enddef\)\>,' . + \ '\<\(wh\%[ile]\|for\)\>:\:\:\,' . + \ '\:\:\,' . + \ '{:},' . + \ '\:\:\:\,' . + \ '\\)\@!\S:\,' + " Ignore syntax region commands and settings, any 'en*' would clobber + " if-endif. + " - set spl=de,en + " - au! FileType javascript syntax region foldBraces start=/{/ end=/}/ … + let b:match_skip = 'synIDattr(synID(line("."),col("."),1),"name") + \ =~? "comment\\|string\\|vimSynReg\\|vimSet"' +endif + +let &cpo = s:cpo_save +unlet s:cpo_save + +" removed this, because 'cpoptions' is a global option. +" setlocal cpo+=M " makes \%( match \) -- cgit v1.2.3