diff options
author | Adam Stankiewicz <sheerun@sher.pl> | 2022-02-17 04:31:35 +0100 |
---|---|---|
committer | Adam Stankiewicz <sheerun@sher.pl> | 2022-02-17 04:31:45 +0100 |
commit | b77c5f11070ecb2ff343aa18b4ea859e6168f16c (patch) | |
tree | c93d347b096ce19556f369428913b697e6aafa00 /ftplugin/freebasic.vim | |
parent | 2c5af8f89d3e61e04e761c07a1f043b0f35203c6 (diff) | |
download | vim-polyglot-b77c5f11070ecb2ff343aa18b4ea859e6168f16c.tar.gz vim-polyglot-b77c5f11070ecb2ff343aa18b4ea859e6168f16c.zip |
Update
Diffstat (limited to 'ftplugin/freebasic.vim')
-rw-r--r-- | ftplugin/freebasic.vim | 60 |
1 files changed, 56 insertions, 4 deletions
diff --git a/ftplugin/freebasic.vim b/ftplugin/freebasic.vim index d2212481..41aa2d30 100644 --- a/ftplugin/freebasic.vim +++ b/ftplugin/freebasic.vim @@ -3,15 +3,67 @@ if polyglot#init#is_disabled(expand('<sfile>:p'), 'freebasic', 'ftplugin/freebas endif " Vim filetype plugin file -" Language: FreeBasic +" Language: FreeBASIC " Maintainer: Doug Kearns <dougkearns@gmail.com> -" Last Change: 2015 Jan 10 +" Last Change: 2021 Mar 16 +" Setup {{{1 if exists("b:did_ftplugin") finish endif -let b:did_ftplugin = 1 + +let s:cpo_save = &cpo +set cpo&vim runtime! ftplugin/basic.vim -" vim: ts=8 +let s:dialect = freebasic#GetDialect() + +" Comments {{{1 +" add ''comments before 'comments +let &l:comments = "sO:*\ -,mO:*\ \ ,exO:*/,s1:/',mb:',ex:'/,:''," .. &l:comments + +" Match words {{{1 +if exists("loaded_matchit") + let s:not_end = '\%(end\s\+\)\@<!' + + let b:match_words .= ',' + + if s:dialect == 'fb' + let b:match_words .= s:not_end .. '\<constructor\>:\<end\s\+constructor\>,' .. + \ s:not_end .. '\<destructor\>:\<end\s\+destructor\>,' .. + \ s:not_end .. '\<property\>:\<end\s\+property\>,' .. + \ s:not_end .. '\<operator\>:\<end\s\+operator\>,' .. + \ s:not_end .. '\<extern\%(\s\+"\)\@=:\<end\s\+extern\>,' + endif + + if s:dialect == 'fb' || s:dialect == 'deprecated' + let b:match_words .= s:not_end .. '\<scope\>:\<end\s\+scope\>,' + endif + + if s:dialect == 'qb' + let b:match_words .= s:not_end .. '\<__asm\>:\<end\s\+__asm\>,' .. + \ s:not_end .. '\<__union\>:\<end\s\+__union\>,' .. + \ s:not_end .. '\<__with\>:\<end\s\+__with\>,' + else + let b:match_words .= s:not_end .. '\<asm\>:\<end\s\+asm\>,' .. + \ s:not_end .. '\<namespace\>:\<end\s\+namespace\>,' .. + \ s:not_end .. '\<union\>:\<end\s\+union\>,' .. + \ s:not_end .. '\<with\>:\<end\s\+with\>,' + endif + + let b:match_words .= s:not_end .. '\<enum\>:\<end\s\+enum\>,' .. + \ '^#\s*\%(if\|ifdef\|ifndef\)\>:^#\s*\%(else\|elseif\)\>:^#\s*endif\>,' .. + \ '^#\s*macro\>:^#\s*endmacro\>' + + " skip "function = <retval>" + let b:match_skip .= '|| strpart(getline("."), col(".") - 1) =~? "^\\<function\\s\\+="' + + unlet s:not_end +endif + +" Cleanup {{{1 +let &cpo = s:cpo_save +unlet s:cpo_save + +" vim: nowrap sw=2 sts=2 ts=8 noet fdm=marker: |