" Vim filetype plugin file " Language: Visual Basic (ft=vb) " Maintainer: Doug Kearns " Previous Maintainer: Johannes Zellner " Last Change: 2021 Nov 17 if exists("b:did_ftplugin") finish endif let b:did_ftplugin = 1 let s:cpo_save = &cpo set cpo&vim setlocal comments=sr:'\ -,mb:'\ \ ,el:'\ \ ,:' setlocal commentstring='\ %s setlocal formatoptions-=t formatoptions+=croql let b:undo_ftplugin = "setlocal com< cms< fo<" " we need this wrapper, as call doesn't allow a count function! s:VbSearch(pattern, flags) let cnt = v:count1 while cnt > 0 call search(a:pattern, a:flags) let cnt = cnt - 1 endwhile endfunction if !exists("no_plugin_maps") && !exists("no_vb_maps") nnoremap [[ call VbSearch('^\s*\%(\%(private\public\)\s\+\)\=\%(function\sub\)', 'sbW') vnoremap [[ call VbSearch('^\s*\%(\%(private\public\)\s\+\)\=\%(function\sub\)', 'sbW') nnoremap ]] call VbSearch('^\s*\%(\%(private\public\)\s\+\)\=\%(function\sub\)', 'sW') vnoremap ]] call VbSearch('^\s*\%(\%(private\public\)\s\+\)\=\%(function\sub\)', 'sW') nnoremap [] call VbSearch('^\s*end\s\+\%(function\sub\)', 'sbW') vnoremap [] call VbSearch('^\s*end\s\+\%(function\sub\)', 'sbW') nnoremap ][ call VbSearch('^\s*end\s\+\%(function\sub\)', 'sW') vnoremap ][ call VbSearch('^\s*end\s\+\%(function\sub\)', 'sW') let b:undo_ftplugin .= " | sil! exe 'nunmap [[' | sil! exe 'vunmap [['" . \ " | sil! exe 'nunmap ]]' | sil! exe 'vunmap ]]'" . \ " | sil! exe 'nunmap []' | sil! exe 'vunmap []'" . \ " | sil! exe 'nunmap ][' | sil! exe 'vunmap ]['" endif " TODO: line start anchors are almost certainly overly restrictive - allow " after statement separators. Even in QuickBasic only block IF statements " were required to be at the start of a line. if exists("loaded_matchit") && !exists("b:match_words") let b:match_ignorecase = 1 let b:match_words = \ '\%(^\s*\)\@<=\.*\\s*\%($\|''\):\%(^\s*\)\@<=\:\%(^\s*\)\@<=\:\%(^\s*\)\@<=\\s\+\,' . \ '\%(^\s*\)\@<=\:\%(^\s*\)\@<=\,' . \ '\%(^\s*\)\@<=\:\%(^\s*\)\@<=\,' . \ '\%(^\s*\)\@<=\:\%(^\s*\)\@<=\\s\+\,' . \ '\%(^\s*\)\@<=\\s\+\:\%(^\s*\)\@<=\:\%(^\s*\)\@<=\\s\+\,' . \ '\%(^\s*\)\@<=\:\%(^\s*\)\@<=\\s\,' . \ '\%(^\s*\)\@<=\:\%(^\s*\)\@<=\\s\,' . \ '\%(^\s*\)\@<=\%(\<\%(private\|public\)\>\s\+\)\=\\s\+\([^ \t(]\+\):\%(^\s*\)\@<=\<\1\>\s*=:\%(^\s*\)\@<=\\s\+\,' . \ '\%(^\s*\)\@<=\%(\<\%(private\|public\)\>\s\+\)\=\\s\+:\%(^\s*\)\@<=\\s\+\' let b:undo_ftplugin .= " | unlet! b:match_words b:match_ignorecase" endif if (has("gui_win32") || has("gui_gtk")) && !exists("b:browsefilter") let b:browsefilter = "Visual Basic Source Files (*.bas)\t*.bas\n" . \ "Visual Basic Form Files (*.frm)\t*.frm\n" . \ "All Files (*.*)\t*.*\n" let b:undo_ftplugin .= " | unlet! b:browsefilter" endif let &cpo = s:cpo_save unlet s:cpo_save