mirror of
https://github.com/neovim/neovim.git
synced 2024-12-29 14:41:06 -07:00
79b92da0d2
Update runtime files
f10911e5db
410 lines
7.8 KiB
VimL
410 lines
7.8 KiB
VimL
" Vim syntax file
|
|
" Language: QB64
|
|
" Maintainer: Doug Kearns <dougkearns@gmail.com>
|
|
" Last Change: 2022 Jan 21
|
|
|
|
" Prelude {{{1
|
|
if exists("b:current_syntax")
|
|
finish
|
|
endif
|
|
|
|
let s:cpo_save = &cpo
|
|
set cpo&vim
|
|
|
|
" syn iskeyword set after sourcing of basic.vim
|
|
|
|
syn case ignore
|
|
|
|
let s:prefix = search('\c^\s*$NOPREFIX\>', 'n') ? '_\=' : '_'
|
|
|
|
" Statements {{{1
|
|
|
|
let s:statements =<< trim EOL " {{{2
|
|
acceptfiledrop
|
|
allowfullscreen
|
|
assert
|
|
console
|
|
consolecursor
|
|
consolefont
|
|
consoletitle
|
|
continue
|
|
copypalette
|
|
define
|
|
delay
|
|
depthbuffer
|
|
displayorder
|
|
dontblend
|
|
echo
|
|
exit\s\+\%(select\|case\)
|
|
finishdrop
|
|
freefont
|
|
freeimage
|
|
icon
|
|
keyclear
|
|
limit
|
|
maptriangle
|
|
memcopy
|
|
memfill
|
|
memfree
|
|
memput
|
|
mousehide
|
|
mousemove
|
|
mouseshow
|
|
printimage
|
|
printstring
|
|
putimage
|
|
screenclick
|
|
screenhide
|
|
screenmove
|
|
screenprint
|
|
screenshow
|
|
setalpha
|
|
sndbal
|
|
sndclose
|
|
sndlimit
|
|
sndloop
|
|
sndpause
|
|
sndplay
|
|
sndplaycopy
|
|
sndplayfile
|
|
sndraw
|
|
sndrawdone
|
|
sndsetpos
|
|
sndstop
|
|
sndvol
|
|
title
|
|
EOL
|
|
" }}}
|
|
|
|
for s in s:statements
|
|
exe 'syn match qb64Statement "\<' .. s:prefix .. s .. '\>" contained contains=qb64Underscore'
|
|
endfor
|
|
|
|
" Functions {{{1
|
|
|
|
let s:functions =<< trim EOL " {{{2
|
|
acos
|
|
acosh
|
|
alpha
|
|
alpha32
|
|
arccot
|
|
arccsc
|
|
arcsec
|
|
asin
|
|
asinh
|
|
atan2
|
|
atanh
|
|
axis
|
|
backgroundcolor
|
|
blue
|
|
blue32
|
|
button
|
|
buttonchange
|
|
ceil
|
|
cinp
|
|
commandcount
|
|
connected
|
|
connectionaddress
|
|
connectionaddress$
|
|
consoleinput
|
|
copyimage
|
|
cot
|
|
coth
|
|
cosh
|
|
csc
|
|
csch
|
|
cv
|
|
cwd$
|
|
d2g
|
|
d2r
|
|
defaultcolor
|
|
deflate$
|
|
desktopheight
|
|
desktopwidth
|
|
device$
|
|
deviceinput
|
|
devices
|
|
dir$
|
|
direxists
|
|
droppedfile
|
|
droppedfile$
|
|
errorline
|
|
errormessage$
|
|
exit
|
|
fileexists
|
|
fontheight
|
|
fontwidth
|
|
freetimer
|
|
g2d
|
|
g2r
|
|
green
|
|
green32
|
|
height
|
|
hypot
|
|
inclerrorfile$
|
|
inclerrorline
|
|
inflate$
|
|
instrrev
|
|
keyhit
|
|
keydown
|
|
lastaxis
|
|
lastbutton
|
|
lastwheel
|
|
loadfont
|
|
loadimage
|
|
mem
|
|
memelement
|
|
memexists
|
|
memimage
|
|
memnew
|
|
memsound
|
|
mk$
|
|
mousebutton
|
|
mouseinput
|
|
mousemovementx
|
|
mousemovementy
|
|
mousepipeopen
|
|
mousewheel
|
|
mousex
|
|
mousey
|
|
newimage
|
|
offset
|
|
openclient
|
|
os$
|
|
pi
|
|
pixelsize
|
|
printwidth
|
|
r2d
|
|
r2g
|
|
red
|
|
red32
|
|
readbit
|
|
resetbit
|
|
resizeheight
|
|
resizewidth
|
|
rgb
|
|
rgb32
|
|
rgba
|
|
rgba32
|
|
round
|
|
sec
|
|
sech
|
|
screenexists
|
|
screenimage
|
|
screenx
|
|
screeny
|
|
setbit
|
|
shellhide
|
|
shl
|
|
shr
|
|
sinh
|
|
sndcopy
|
|
sndgetpos
|
|
sndlen
|
|
sndopen
|
|
sndopenraw
|
|
sndpaused
|
|
sndplaying
|
|
sndrate
|
|
sndrawlen
|
|
startdir$
|
|
strcmp
|
|
stricmp
|
|
tanh
|
|
title$
|
|
togglebit
|
|
totaldroppedfiles
|
|
trim$
|
|
wheel
|
|
width
|
|
windowhandle
|
|
windowhasfocus
|
|
EOL
|
|
" }}}
|
|
|
|
for f in s:functions
|
|
exe 'syn match qb64Function "\<' .. s:prefix .. f .. '\>" contains=qb64Underscore'
|
|
endfor
|
|
|
|
" Functions and statements (same name) {{{1
|
|
|
|
let s:common =<< trim EOL " {{{2
|
|
autodisplay
|
|
blend
|
|
blink
|
|
capslock
|
|
clearcolor
|
|
clipboard$
|
|
clipboardimage
|
|
controlchr
|
|
dest
|
|
display
|
|
font
|
|
fullscreen
|
|
mapunicode
|
|
memget
|
|
numlock
|
|
palettecolor
|
|
printmode
|
|
resize
|
|
screenicon
|
|
scrolllock
|
|
source
|
|
EOL
|
|
" }}}
|
|
|
|
for c in s:common
|
|
exe 'syn match qb64Statement "\<' .. s:prefix .. c .. '\>" contains=qb64Underscore contained'
|
|
exe 'syn match qb64Function "\<' .. s:prefix .. c .. '\>" contains=qb64Underscore'
|
|
endfor
|
|
|
|
" Keywords {{{1
|
|
|
|
" Non-prefixed keywords {{{2
|
|
" TIMER FREE
|
|
" _DEPTH_BUFFER LOCK
|
|
syn keyword qb64Keyword free lock
|
|
|
|
let s:keywords =<< trim EOL " {{{2
|
|
all
|
|
anticlockwise
|
|
behind
|
|
clear
|
|
clip
|
|
console
|
|
dontwait
|
|
explicit
|
|
explicitarray
|
|
fillbackground
|
|
hardware
|
|
hardware1
|
|
hide
|
|
keepbackground
|
|
middle
|
|
none
|
|
off
|
|
only
|
|
onlybackground
|
|
ontop
|
|
openconnection
|
|
openhost
|
|
preserve
|
|
seamless
|
|
smooth
|
|
smoothshrunk
|
|
smoothstretched
|
|
software
|
|
squarepixels
|
|
stretch
|
|
toggle
|
|
EOL
|
|
" }}}
|
|
|
|
for k in s:keywords
|
|
exe 'syn match qb64Keyword "\<' .. s:prefix .. k .. '\>" contains=qb64Underscore'
|
|
endfor
|
|
|
|
syn match qb64Underscore "\<_" contained conceal transparent
|
|
|
|
" Source QuickBASIC syntax {{{1
|
|
runtime! syntax/basic.vim
|
|
|
|
" add after the BASIC syntax file is sourced so cluster already exists
|
|
syn cluster basicStatements add=qb64Statement,qb64Metacommand,qb64IfMetacommand
|
|
syn cluster basicLineIdentifier add=qb64LineLabel
|
|
syn cluster qb64NotTop contains=@basicNotTop,qb64Metavariable
|
|
|
|
syn iskeyword @,48-57,.,_,!,#,$,%,&,`
|
|
|
|
" Unsupported QuickBASIC features {{{1
|
|
" TODO: add linux only missing features
|
|
syn keyword qb64Unsupported alias any byval calls cdecl erdev erdev$ fileattr
|
|
syn keyword qb64Unsupported fre ioctl ioctl$ pen play setmem signal uevent
|
|
syn keyword qb64Unsupported tron troff
|
|
syn match qb64Unsupported "\<declare\%(\s\+\%(sub\|function\)\>\)\@="
|
|
syn match qb64Unsupported "\<\%(date\|time\)$\ze\s*=" " statements only
|
|
syn match qb64Unsupported "\<def\zs\s\+FN"
|
|
syn match qb64Unsupported "\<\%(exit\|end\)\s\+def\>"
|
|
syn match qb64Unsupported "\<width\s\+lprint\>"
|
|
|
|
" Types {{{1
|
|
syn keyword qb64Type _BIT _BYTE _FLOAT _INTEGER64 _MEM _OFFSET _UNSIGNED
|
|
|
|
" Type suffixes {{{1
|
|
if exists("basic_type_suffixes")
|
|
" TODO: handle leading word boundary and __+ prefix
|
|
syn match qb64TypeSuffix "\%(\a[[:alnum:]._]*\)\@<=\~\=`\%(\d\+\)\="
|
|
syn match qb64TypeSuffix "\%(\a[[:alnum:]._]*\)\@<=\~\=\%(%\|%%\|&\|&&\|%&\)"
|
|
syn match qb64TypeSuffix "\%(\a[[:alnum:]._]*\)\@<=\%(!\|##\|#\)"
|
|
syn match qb64TypeSuffix "\%(\a[[:alnum:]._]*\)\@<=$\%(\d\+\)\="
|
|
endif
|
|
|
|
" Numbers {{{1
|
|
|
|
" Integers
|
|
syn match qb64Number "-\=&b[01]\+&\>\="
|
|
|
|
syn match qb64Number "-\=\<[01]\~\=`\>"
|
|
syn match qb64Number "-\=\<\d\+`\d\+\>"
|
|
|
|
syn match qb64Number "-\=\<\d\+\%(%%\|&&\|%&\)\>"
|
|
syn match qb64Number "\<\d\+\~\%(%%\|&&\|%&\)\>"
|
|
|
|
syn match qb64Number "-\=\<&b[01]\+\%(%%\|&&\|%&\)\>"
|
|
syn match qb64Number "\<&b[01]\+\~\%(%%\|&&\|%&\)\>"
|
|
|
|
syn match qb64Number "-\=\<&o\=\o\+\%(%%\|&&\|%&\)\>"
|
|
syn match qb64Number "\<&o\=\o\+\~\%(%%\|&&\|%&\)\>"
|
|
|
|
syn match qb64Number "-\=\<&h\x\+\%(%%\|&&\|%&\)\>"
|
|
syn match qb64Number "\<&h\x\+\~\%(%%\|&&\|%&\)\>"
|
|
|
|
" Floats
|
|
syn match qb64Float "-\=\<\d\+\.\=\d*##\>"
|
|
syn match qb64Float "-\=\<\.\d\+##\>"
|
|
|
|
" Line numbers and labels {{{1
|
|
syn match qb64LineLabel "\%(_\{2,}\)\=\a[[:alnum:]._]*[[:alnum:]]\ze\s*:" nextgroup=@basicStatements skipwhite contained
|
|
|
|
" Metacommands {{{1
|
|
syn match qb64Metacommand contained "$NOPREFIX\>"
|
|
syn match qb64Metacommand contained "$ASSERTS\%(:CONSOLE\)\=\>"
|
|
syn match qb64Metacommand contained "$CHECKING:\%(ON\|OFF\)\>"
|
|
syn match qb64Metacommand contained "$COLOR:\%(0\|32\)\>"
|
|
syn match qb64Metacommand contained "$CONSOLE\%(:ONLY\)\=\>"
|
|
syn match qb64Metacommand contained "$EXEICON\s*:\s*'[^']\+'"
|
|
syn match qb64Metacommand contained "$ERROR\>"
|
|
syn match qb64Metacommand contained "$LET\>"
|
|
syn match qb64Metacommand contained "$RESIZE:\%(ON\|OFF\|STRETCH\|SMOOTH\)\>"
|
|
syn match qb64Metacommand contained "$SCREEN\%(HIDE\|SHOW\)\>"
|
|
syn match qb64Metacommand contained "$VERSIONINFO\s*:.*"
|
|
syn match qb64Metacommand contained "$VIRTUALKEYBOARD:\%(ON\|OFF\)\>"
|
|
|
|
syn region qb64IfMetacommand contained matchgroup=qb64Metacommand start="$\%(IF\|ELSEIF\)\>" end="\<THEN\>" oneline transparent contains=qb64Metavariable
|
|
syn match qb64Metacommand contained "$\%(ELSE\|END\s*IF\)\>"
|
|
|
|
syn keyword qb64Metavariable contained defined undefined
|
|
syn keyword qb64Metavariable contained windows win linux mac maxosx
|
|
syn keyword qb64Metavariable contained 32bit 64bit version
|
|
|
|
" Default Highlighting {{{1
|
|
hi def link qb64Float basicFloat
|
|
hi def link qb64Function Function
|
|
hi def link qb64Keyword Keyword
|
|
hi def link qb64LineLabel basicLineLabel
|
|
hi def link qb64Metacommand PreProc
|
|
hi def link qb64Metavariable Identifier
|
|
hi def link qb64Number basicNumber
|
|
hi def link qb64Statement Statement
|
|
hi def link qb64TypeSuffix basicTypeSuffix
|
|
hi def link qb64Type Type
|
|
hi def link qb64Unsupported Error
|
|
|
|
" Postscript {{{1
|
|
let b:current_syntax = "qb64"
|
|
|
|
let &cpo = s:cpo_save
|
|
unlet s:cpo_save
|
|
|
|
" vim: nowrap sw=2 sts=2 ts=8 noet fdm=marker:
|