mirror of
				https://github.com/neovim/neovim.git
				synced 2025-11-04 09:44:31 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			82 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			VimL
		
	
	
	
	
	
			
		
		
	
	
			82 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			VimL
		
	
	
	
	
	
" 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:
 |