12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182 |
- " Vim filetype plugin file
- " Language: FreeBASIC
- " Maintainer: Doug Kearns <dougkearns@gmail.com>
- " Last Change: 2022 Jun 24
- " Setup {{{1
- if exists("b:did_ftplugin")
- finish
- endif
- let s:cpo_save = &cpo
- set cpo&vim
- runtime! ftplugin/basic.vim
- 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:line_start = '\%(^\s*\)\@<='
- 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:line_start .. '#\s*\%(if\|ifdef\|ifndef\)\>:' ..
- \ s:line_start .. '#\s*\%(else\|elseif\)\>:' ..
- \ s:line_start .. '#\s*endif\>,' ..
- \ s:line_start .. '#\s*macro\>:' .. s:line_start .. '#\s*endmacro\>,' ..
- \ "/':'/"
- " skip "function = <retval>" and "continue { do | for | while }"
- if s:dialect == "qb"
- let s:continue = "__continue"
- else
- let s:continue = "continue"
- endif
- let b:match_skip ..= ' || strpart(getline("."), col(".") - 1) =~? "^\\<function\\s\\+="' ..
- \ ' || strpart(getline("."), 0, col(".") ) =~? "\\<' .. s:continue .. '\\s\\+"'
- unlet s:not_end s:line_start
- endif
- if (has("gui_win32") || has("gui_gtk")) && exists("b:basic_set_browsefilter")
- let b:browsefilter = "FreeBASIC Source Files (*.bas)\t*.bas\n" ..
- \ "FreeBASIC Header Files (*.bi)\t*.bi\n" ..
- \ "All Files (*.*)\t*.*\n"
- endif
- " Cleanup {{{1
- let &cpo = s:cpo_save
- unlet s:cpo_save s:dialect
- " vim: nowrap sw=2 sts=2 ts=8 noet fdm=marker:
|