Add support for Visual Basic and Basic

This commit is contained in:
Adam Stankiewicz
2020-09-06 20:51:38 +02:00
parent 255345bf95
commit cd2fded0e0
13 changed files with 924 additions and 155 deletions

View File

@@ -7,7 +7,7 @@ A collection of language packs for Vim.
> One to rule them all, one to find them, one to bring them all and in the darkness bind them. > One to rule them all, one to find them, one to bring them all and in the darkness bind them.
- It **won't affect your startup time**, as scripts are loaded only on demand\*. - It **won't affect your startup time**, as scripts are loaded only on demand\*.
- It **installs and updates 120+ times faster** than the <!--Package Count-->191<!--/Package Count--> packages it consists of. - It **installs and updates 120+ times faster** than the <!--Package Count-->193<!--/Package Count--> packages it consists of.
- It is more secure because scripts loaded for all extensions are generated by vim-polyglot (ftdetect). - It is more secure because scripts loaded for all extensions are generated by vim-polyglot (ftdetect).
- Solid syntax and indentation support (other features skipped). Only the best language packs. - Solid syntax and indentation support (other features skipped). Only the best language packs.
- All unnecessary files are ignored (like enormous documentation from php support). - All unnecessary files are ignored (like enormous documentation from php support).
@@ -78,6 +78,7 @@ If you need full functionality of any plugin, please use it directly with your p
- [automake](https://github.com/vim/vim/tree/master/runtime) - [automake](https://github.com/vim/vim/tree/master/runtime)
- [ave](https://github.com/vim/vim/tree/master/runtime) - [ave](https://github.com/vim/vim/tree/master/runtime)
- [awk](https://github.com/vim/vim/tree/master/runtime) - [awk](https://github.com/vim/vim/tree/master/runtime)
- [basic](https://github.com/vim/vim/tree/master/runtime)
- [blade](https://github.com/jwalton512/vim-blade) - [blade](https://github.com/jwalton512/vim-blade)
- [brewfile](https://github.com/bfontaine/Brewfile.vim) - [brewfile](https://github.com/bfontaine/Brewfile.vim)
- [c/c++](https://github.com/vim-jp/vim-cpp) - [c/c++](https://github.com/vim-jp/vim-cpp)
@@ -224,6 +225,7 @@ If you need full functionality of any plugin, please use it directly with your p
- [vbnet](https://github.com/vim-scripts/vbnet.vim) - [vbnet](https://github.com/vim-scripts/vbnet.vim)
- [vcl](https://github.com/smerrill/vcl-vim-plugin) - [vcl](https://github.com/smerrill/vcl-vim-plugin)
- [velocity](https://github.com/lepture/vim-velocity) - [velocity](https://github.com/lepture/vim-velocity)
- [visual-basic](https://github.com/vim/vim/tree/master/runtime)
- [vmasm](https://github.com/vim/vim/tree/master/runtime) - [vmasm](https://github.com/vim/vim/tree/master/runtime)
- [vue](https://github.com/posva/vim-vue) - [vue](https://github.com/posva/vim-vue)
- [xdc](https://github.com/amal-khailtash/vim-xdc-syntax) - [xdc](https://github.com/amal-khailtash/vim-xdc-syntax)

View File

@@ -256,6 +256,16 @@ func! polyglot#DetectLidrFiletype()
setf lidris2 | return setf lidris2 | return
endfunc endfunc
func! polyglot#DetectBasFiletype()
for lnum in range(1, min([line("$"), 5]))
let line = getline(lnum)
if line =~? 'VB_Name\|Begin VB\.\(Form\|MDIForm\|UserControl\)'
setf vb | return
endif
endfor
setf basic | return
endfunc
" Restore 'cpoptions' " Restore 'cpoptions'
let &cpo = s:cpo_save let &cpo = s:cpo_save
unlet s:cpo_save unlet s:cpo_save

View File

@@ -35,6 +35,7 @@ let s:globs = {
\ 'automake': '[Mm]akefile.am,GNUmakefile.am', \ 'automake': '[Mm]akefile.am,GNUmakefile.am',
\ 'ave': '*.ave', \ 'ave': '*.ave',
\ 'awk': '*.awk', \ 'awk': '*.awk',
\ 'basic': '*.basic',
\ 'blade': '*.blade,*.blade.php', \ 'blade': '*.blade,*.blade.php',
\ 'brewfile': 'Brewfile', \ 'brewfile': 'Brewfile',
\ 'c': '*.c,*.cats,*.h,*.idc', \ 'c': '*.c,*.cats,*.h,*.idc',
@@ -200,6 +201,7 @@ let s:globs = {
\ 'unison': '*.u,*.uu', \ 'unison': '*.u,*.uu',
\ 'v': '*.v', \ 'v': '*.v',
\ 'vala': '*.vala,*.vapi,*.valadoc', \ 'vala': '*.vala,*.vapi,*.valadoc',
\ 'vb': '*.bas,*.cls,*.frm,*.frx,*.vba,*.vbs,*.dsm,*.ctl,*.sba',
\ 'vbnet': '*.vb,*.vbhtml', \ 'vbnet': '*.vb,*.vbhtml',
\ 'vcl': '*.vcl', \ 'vcl': '*.vcl',
\ 'velocity': '*.vm', \ 'velocity': '*.vm',

View File

@@ -1712,6 +1712,22 @@ if !has_key(s:disabled_packages, 'trasys')
au! BufNewFile,BufRead *.inp call polyglot#DetectInpFiletype() au! BufNewFile,BufRead *.inp call polyglot#DetectInpFiletype()
endif endif
if !has_key(s:disabled_packages, 'basic')
au BufNewFile,BufRead *.basic setf basic
endif
if !has_key(s:disabled_packages, 'visual-basic')
au BufNewFile,BufRead *.cls setf vb
au BufNewFile,BufRead *.ctl setf vb
au BufNewFile,BufRead *.dsm setf vb
au BufNewFile,BufRead *.frm setf vb
au BufNewFile,BufRead *.frx setf vb
au BufNewFile,BufRead *.sba setf vb
au BufNewFile,BufRead *.vba setf vb
au BufNewFile,BufRead *.vbs setf vb
au! BufNewFile,BufRead *.bas call polyglot#DetectBasFiletype()
endif
" end filetypes " end filetypes

49
ftplugin/vb.vim Normal file
View File

@@ -0,0 +1,49 @@
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'visual-basic') == -1
" Vim filetype plugin file
" Language: VisualBasic (ft=vb)
" Maintainer: Johannes Zellner <johannes@zellner.org>
" Last Change: Thu, 22 Nov 2001 12:56:14 W. Europe Standard Time
if exists("b:did_ftplugin") | finish | endif
let b:did_ftplugin = 1
setlocal com=sr:'\ -,mb:'\ \ ,el:'\ \ ,:'
" we need this wrapper, as call doesn't allow a count
fun! <SID>VbSearch(pattern, flags)
let cnt = v:count1
while cnt > 0
call search(a:pattern, a:flags)
let cnt = cnt - 1
endwhile
endfun
let s:cpo_save = &cpo
set cpo&vim
" NOTE the double escaping \\|
nnoremap <buffer> <silent> [[ :call <SID>VbSearch('^\s*\(\(private\|public\)\s\+\)\=\(function\\|sub\)', 'bW')<cr>
nnoremap <buffer> <silent> ]] :call <SID>VbSearch('^\s*\(\(private\|public\)\s\+\)\=\(function\\|sub\)', 'W')<cr>
nnoremap <buffer> <silent> [] :call <SID>VbSearch('^\s*\<end\>\s\+\(function\\|sub\)', 'bW')<cr>
nnoremap <buffer> <silent> ][ :call <SID>VbSearch('^\s*\<end\>\s\+\(function\\|sub\)', 'W')<cr>
" matchit support
if exists("loaded_matchit")
let b:match_ignorecase=1
let b:match_words=
\ '\%(^\s*\)\@<=\<if\>.*\<then\>\s*$:\%(^\s*\)\@<=\<else\>:\%(^\s*\)\@<=\<elseif\>:\%(^\s*\)\@<=\<end\>\s\+\<if\>,' .
\ '\%(^\s*\)\@<=\<for\>:\%(^\s*\)\@<=\<next\>,' .
\ '\%(^\s*\)\@<=\<while\>:\%(^\s*\)\@<=\<wend\>,' .
\ '\%(^\s*\)\@<=\<do\>:\%(^\s*\)\@<=\<loop\>\s\+\<while\>,' .
\ '\%(^\s*\)\@<=\<select\>\s\+\<case\>:\%(^\s*\)\@<=\<case\>:\%(^\s*\)\@<=\<end\>\s\+\<select\>,' .
\ '\%(^\s*\)\@<=\<enum\>:\%(^\s*\)\@<=\<end\>\s\<enum\>,' .
\ '\%(^\s*\)\@<=\<with\>:\%(^\s*\)\@<=\<end\>\s\<with\>,' .
\ '\%(^\s*\)\@<=\%(\<\%(private\|public\)\>\s\+\)\=\<function\>\s\+\([^ \t(]\+\):\%(^\s*\)\@<=\<\1\>\s*=:\%(^\s*\)\@<=\<end\>\s\+\<function\>,' .
\ '\%(^\s*\)\@<=\%(\<\%(private\|public\)\>\s\+\)\=\<sub\>\s\+:\%(^\s*\)\@<=\<end\>\s\+\<sub\>'
endif
let &cpo = s:cpo_save
unlet s:cpo_save
endif

View File

@@ -93,3 +93,11 @@ rules:
pattern: '^>\s*--.*[Ii]dris ?1' pattern: '^>\s*--.*[Ii]dris ?1'
filetype: lidris filetype: lidris
- filetype: lidris2 - filetype: lidris2
---
extensions: [bas]
rules:
- lines: 5
pattern: 'VB_Name|Begin VB\.(Form|MDIForm|UserControl)'
filetype: vb
ignore_case: true
- filetype: basic

82
indent/vb.vim Normal file
View File

@@ -0,0 +1,82 @@
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'visual-basic') == -1
" Vim indent file
" Language: VisualBasic (ft=vb) / Basic (ft=basic) / SaxBasic (ft=vb)
" Author: Johannes Zellner <johannes@zellner.org>
" Last Change: Fri, 18 Jun 2004 07:22:42 CEST
" Small update 2010 Jul 28 by Maxim Kim
if exists("b:did_indent")
finish
endif
let b:did_indent = 1
setlocal autoindent
setlocal indentexpr=VbGetIndent(v:lnum)
setlocal indentkeys&
setlocal indentkeys+==~else,=~elseif,=~end,=~wend,=~case,=~next,=~select,=~loop,<:>
let b:undo_indent = "set ai< indentexpr< indentkeys<"
" Only define the function once.
if exists("*VbGetIndent")
finish
endif
fun! VbGetIndent(lnum)
" labels and preprocessor get zero indent immediately
let this_line = getline(a:lnum)
let LABELS_OR_PREPROC = '^\s*\(\<\k\+\>:\s*$\|#.*\)'
if this_line =~? LABELS_OR_PREPROC
return 0
endif
" Find a non-blank line above the current line.
" Skip over labels and preprocessor directives.
let lnum = a:lnum
while lnum > 0
let lnum = prevnonblank(lnum - 1)
let previous_line = getline(lnum)
if previous_line !~? LABELS_OR_PREPROC
break
endif
endwhile
" Hit the start of the file, use zero indent.
if lnum == 0
return 0
endif
let ind = indent(lnum)
" Add
if previous_line =~? '^\s*\<\(begin\|\%(\%(private\|public\|friend\)\s\+\)\=\%(function\|sub\|property\)\|select\|case\|default\|if\|else\|elseif\|do\|for\|while\|enum\|with\)\>'
let ind = ind + shiftwidth()
endif
" Subtract
if this_line =~? '^\s*\<end\>\s\+\<select\>'
if previous_line !~? '^\s*\<select\>'
let ind = ind - 2 * shiftwidth()
else
" this case is for an empty 'select' -- 'end select'
" (w/o any case statements) like:
"
" select case readwrite
" end select
let ind = ind - shiftwidth()
endif
elseif this_line =~? '^\s*\<\(end\|else\|elseif\|until\|loop\|next\|wend\)\>'
let ind = ind - shiftwidth()
elseif this_line =~? '^\s*\<\(case\|default\)\>'
if previous_line !~? '^\s*\<select\>'
let ind = ind - shiftwidth()
endif
endif
return ind
endfun
" vim:sw=4
endif

View File

@@ -348,14 +348,14 @@ filetypes:
extra_extensions: extra_extensions:
# 17 results: https://github.com/search?q=extension%3Acoffeekup+html&type=Code # 17 results: https://github.com/search?q=extension%3Acoffeekup+html&type=Code
- coffeekup - coffeekup
ignored_extensions: ignored_filenames:
# Probably mistake
- '*Cakefile'
ignored_warnings:
# Used by C# # Used by C#
- csx - csx
# Used by Chuck # Used by Chuck
- ck - ck
ignored_filenames:
# Probably mistake
- '*Cakefile'
- name: litcoffee - name: litcoffee
linguist: Literate CoffeeScript linguist: Literate CoffeeScript
extra_extensions: extra_extensions:
@@ -395,7 +395,7 @@ filetypes:
extra_extensions: extra_extensions:
- tsv - tsv
- tab - tab
ignored_extensions: ignored_warnings:
# This is definitely not csv-only, maybe re-enable when heuristics done # This is definitely not csv-only, maybe re-enable when heuristics done
- dat - dat
--- ---
@@ -815,8 +815,10 @@ filetypes:
extra_extensions: extra_extensions:
- j2 - j2
ignored_extensions: ignored_extensions:
- mustache
- njk - njk
ignore_warnings:
# handled by mustache plugin
- mustache
--- ---
name: jq name: jq
remote: vito-c/jq.vim remote: vito-c/jq.vim
@@ -857,8 +859,8 @@ filetypes:
extra_extensions: extra_extensions:
- jst - jst
- ect - ect
ignored_extensions: ignored_warnings:
# I haven't found reference to them # I haven't found reference to them on github
- djs - djs
- hamljs - hamljs
--- ---
@@ -974,6 +976,7 @@ filetypes:
ignored_extensions: ignored_extensions:
# Handled by mdx extension # Handled by mdx extension
- mdx - mdx
ignored_warnings:
- '{md,mdx,mdown,mkd,mkdn,markdown,mdwn}.{des3,des,bf,bfa,aes,idea,cast,rc2,rc4,rc5,desx}' - '{md,mdx,mdown,mkd,mkdn,markdown,mdwn}.{des3,des,bf,bfa,aes,idea,cast,rc2,rc4,rc5,desx}'
--- ---
name: mdx name: mdx
@@ -1551,9 +1554,9 @@ remote: lumiliet/vim-twig
filetypes: filetypes:
- name: html.twig - name: html.twig
linguist: Twig linguist: Twig
ignored_extensions: ignored_warnings:
# handled by other extension
- xml.twig - xml.twig
ignored_extensions:
# already covered by .twig # already covered by .twig
- html.twig - html.twig
- name: xml.twig - name: xml.twig
@@ -1721,3 +1724,26 @@ filetypes:
- name: trasys - name: trasys
extensions: extensions:
- inp - inp
---
name: basic
remote: vim/vim:runtime
glob: '**/basic.vim'
filetypes:
- name: basic
extensions:
- basic
---
name: visual-basic
remote: vim/vim:runtime
glob: '**/vb.vim'
filetypes:
- name: vb
linguist: VBA
extra_extensions:
- vbs
- dsm
- ctl
# SaxBasic is close to Visual Basic
- sba
ignore_warnings:
- vb

View File

@@ -59,10 +59,15 @@ def load_data()
linguist = languages.fetch(filetype["linguist"]) linguist = languages.fetch(filetype["linguist"])
filetype["extensions"] = (( filetype["extensions"] = (linguist["extensions"] || []).map { |e| e[1..-1] } |
(linguist["extensions"] || []).map { |e| e[1..-1] } |
filetype.fetch("extra_extensions", []) filetype.fetch("extra_extensions", [])
) - filetype.fetch("ignored_extensions", [])).uniq
extra_ignored_extensions = filetype.fetch("ignored_extensions", []) - filetype["extensions"]
if extra_ignored_extensions.size > 0
raise StandardError.new("[#{filetype["name"]}]: Unnecessary ignored extensions: #{extra_ignored_extensions.join(", ")}")
end
filetype["extensions"] -= filetype.fetch("ignored_extensions", [])
filetype["filenames"] = (( filetype["filenames"] = ((
(linguist["filenames"] || []) | (linguist["filenames"] || []) |
@@ -394,7 +399,19 @@ def generate_ftdetect(packages, heuristics)
expected_filetypes = detect_filetypes('tmp/**/ftdetect/*.vim') expected_filetypes = detect_filetypes('tmp/**/ftdetect/*.vim')
native_filetypes = detect_filetypes('tmp/vim/vim/runtime/filetype.vim') native_filetypes = detect_filetypes('tmp/vim/vim/runtime/filetype.vim')
native_extensions = native_filetypes.flat_map { |k, v| v["extensions"] } native_extensions = native_filetypes.flat_map { |k, v| v["extensions"] }
all_filetypes = Hash.new { |h, k| h[k] = { extensions: [], filenames: [] } }
for k, v in expected_filetypes
all_filetypes[k][:extensions].concat(v[:extensions])
all_filetypes[k][:filenames].concat(v[:filenames])
end
for k, v in native_filetypes
all_filetypes[k][:extensions].concat(v[:extensions])
all_filetypes[k][:filenames].concat(v[:filenames])
end
for package in packages for package in packages
name = package.fetch("name") name = package.fetch("name")
@@ -438,12 +455,16 @@ def generate_ftdetect(packages, heuristics)
extensions = filetype["extensions"] extensions = filetype["extensions"]
filenames = filetype["filenames"] filenames = filetype["filenames"]
if expected_filetypes[name] && !filetype["syntax"] expected_extensions = all_filetypes.has_key?(name) ? all_filetypes.fetch(name)[:extensions] : []
for e in expected_filetypes.fetch(name)[:extensions] - extensions - expand_all(filetype.fetch("ignored_extensions", [])) ignored_extensions = expand_all(filetype.fetch("ignored_extensions", []))
ignored_warnings = expand_all(filetype.fetch("ignored_warnings", []))
if all_filetypes[name] && !filetype["syntax"]
for e in expected_extensions - extensions - ignored_extensions - ignored_warnings
puts "Probable missing extension for #{name}: #{e}" puts "Probable missing extension for #{name}: #{e}"
end end
for e in expected_filetypes.fetch(name)[:filenames] - expand_all(filenames).flat_map { |e| [e, e.gsub(/^\./, '')] } - expand_all(filetype.fetch("ignored_filenames", [])) - ['*'] for e in all_filetypes.fetch(name)[:filenames] - expand_all(filenames).flat_map { |e| [e, e.gsub(/^\./, '')] } - expand_all(filetype.fetch("ignored_warnings", [])) - ['*']
puts "Probable missing filename for #{name}: #{e}" puts "Probable missing filename for #{name}: #{e}"
end end
end end

View File

@@ -9,145 +9,145 @@ function! TestExtension(filetype, filename, content)
exec ":bw!" exec ":bw!"
catch catch
echo g:message echo g:message
echo 'Filename "' . a:filename . '" does not resolve to extension "' . a:filetype . '"' echo "Filename '" . a:filename . "' does not resolve to extension '" . a:filetype . "'"
echo ' instead received: "' . v:exception . '"' echo " instead received: '" . v:exception . "'"
exec ':cq!' exec ":cq!"
endtry endtry
endfunction endfunction
call TestExtension('sh', 'bash1', "#!/bin/bash") call TestExtension("sh", "bash1", "#!/bin/bash")
call TestExtension('sh', 'bash2', "#! /bin/bash") call TestExtension("sh", "bash2", "#! /bin/bash")
call TestExtension('sh', 'bash3', "#! /bin/bash2.3") call TestExtension("sh", "bash3", "#! /bin/bash2.3")
call TestExtension('sh', 'bash4', "#!/usr/bin/env bash") call TestExtension("sh", "bash4", "#!/usr/bin/env bash")
call TestExtension('sh', 'bash6', "#!/usr/bin/env -i -=split-string foo=bar bash -l foo") call TestExtension("sh", "bash6", "#!/usr/bin/env -i -=split-string foo=bar bash -l foo")
call TestExtension('sh', 'bash1', "#!/bin/bash") call TestExtension("sh", "bash1", "#!/bin/bash")
" Vim help file " Vim help file
call TestExtension('help', $VIMRUNTIME . '/doc/foobar.txt', '') call TestExtension("help", $VIMRUNTIME . "/doc/foobar.txt", "")
" Abaqus or Trasys " Abaqus or Trasys
call TestExtension('abaqus', 'foobar.inp', "*HEADING\nFoobar") call TestExtension("abaqus", "foobar.inp", "*HEADING\nFoobar")
call TestExtension('trasys', 'foobar.inp', "MSC PATRAN\n* foobar\nHEADER SURFACE DATA\nBSC ENCLO1") call TestExtension("trasys", "foobar.inp", "MSC PATRAN\n* foobar\nHEADER SURFACE DATA\nBSC ENCLO1")
" 8th (Firth-derivative) " 8th (Firth-derivative)
call TestExtension('8th', 'foobar.8th', '') call TestExtension("8th", "foobar.8th", "")
call TestExtension('8th', 'foobar.8th', '') call TestExtension("8th", "foobar.8th", "")
" A-A-P recipe " A-A-P recipe
call TestExtension('aap', 'foobar.aap', '') call TestExtension("aap", "foobar.aap", "")
" A2ps printing utility " A2ps printing utility
call TestExtension('a2ps', '/etc/a2ps.cfg', '') call TestExtension("a2ps", "/etc/a2ps.cfg", "")
call TestExtension('a2ps', '/usr/local/etc/a2ps.cfg', '') call TestExtension("a2ps", "/usr/local/etc/a2ps.cfg", "")
call TestExtension('a2ps', '/etc/a2ps/foobar.cfg', '') call TestExtension("a2ps", "/etc/a2ps/foobar.cfg", "")
call TestExtension('a2ps', '/usr/local/etc/a2ps/foobar.cfg', '') call TestExtension("a2ps", "/usr/local/etc/a2ps/foobar.cfg", "")
call TestExtension('a2ps', '/tmp/a2psrc', '') call TestExtension("a2ps", "/tmp/a2psrc", "")
call TestExtension('a2ps', '/tmp/.a2psrc', '') call TestExtension("a2ps", "/tmp/.a2psrc", "")
" ABAB/4 " ABAB/4
call TestExtension('abap', 'foobar.abap', '') call TestExtension("abap", "foobar.abap", "")
" ABC music notation " ABC music notation
call TestExtension('abc', 'foobar.abc', '') call TestExtension("abc", "foobar.abc", "")
" ABEL " ABEL
call TestExtension('abel', 'foobar.abl', '') call TestExtension("abel", "foobar.abl", "")
" AceDB " AceDB
call TestExtension('acedb', 'foobar.wrm', '') call TestExtension("acedb", "foobar.wrm", "")
" Ada (83, 9X, 95) " Ada (83, 9X, 95)
call TestExtension('ada', 'foobar.adb', '') call TestExtension("ada", "foobar.adb", "")
call TestExtension('ada', 'foobar.ads', '') call TestExtension("ada", "foobar.ads", "")
call TestExtension('ada', 'foobar.ada', '') call TestExtension("ada", "foobar.ada", "")
call TestExtension('ada', 'foobar.gpr', '') call TestExtension("ada", "foobar.gpr", "")
" AHDL " AHDL
call TestExtension('ahdl', 'foobar.tdf', '') call TestExtension("ahdl", "foobar.tdf", "")
" AIDL " AIDL
call TestExtension('aidl', 'foobar.aidl', '') call TestExtension("aidl", "foobar.aidl", "")
" AMPL " AMPL
call TestExtension('ampl', 'foobar.run', '') call TestExtension("ampl", "foobar.run", "")
" Ant " Ant
call TestExtension('ant', 'build.xml', '') call TestExtension("ant", "build.xml", "")
" Arduino " Arduino
call TestExtension('arduino', 'foobar.ino', '') call TestExtension("arduino", "foobar.ino", "")
call TestExtension('arduino', 'foobar.pde', '') call TestExtension("arduino", "foobar.pde", "")
" Apache config file " Apache config file
call TestExtension('apache', '.htaccess', '') call TestExtension("apache", ".htaccess", "")
call TestExtension('apache', '/etc/httpd/foobar.conf', '') call TestExtension("apache", "/etc/httpd/foobar.conf", "")
call TestExtension('apache', '/etc/apache2/sites-foobar/foobar.com', '') call TestExtension("apache", "/etc/apache2/sites-foobar/foobar.com", "")
call TestExtension('apache', '/usr/local/etc/httpd/foobar.conf', '') call TestExtension("apache", "/usr/local/etc/httpd/foobar.conf", "")
call TestExtension('apache', '/usr/local/etc/apache2/sites-foobar/foobar.com', '') call TestExtension("apache", "/usr/local/etc/apache2/sites-foobar/foobar.com", "")
" XA65 MOS6510 cross assembler " XA65 MOS6510 cross assembler
call TestExtension('a65', 'foobar.a65', '') call TestExtension("a65", "foobar.a65", "")
" Applescript " Applescript
call TestExtension('applescript', 'foobar.scpt', '') call TestExtension("applescript", "foobar.scpt", "")
" Applix ELF " Applix ELF
call TestExtension('elf', 'foobar.am', '') call TestExtension("elf", "foobar.am", "")
call TestExtension('automake', 'Makefile.am', '') call TestExtension("automake", "Makefile.am", "")
call TestExtension('automake', 'makefile.am', '') call TestExtension("automake", "makefile.am", "")
" ALSA configuration " ALSA configuration
call TestExtension('alsaconf', '.asoundrc', '') call TestExtension("alsaconf", ".asoundrc", "")
call TestExtension('alsaconf', '/usr/share/alsa/alsa.conf', '') call TestExtension("alsaconf", "/usr/share/alsa/alsa.conf", "")
call TestExtension('alsaconf', '/media/foo/usr/share/alsa/alsa.conf', '') call TestExtension("alsaconf", "/media/foo/usr/share/alsa/alsa.conf", "")
call TestExtension('alsaconf', '/etc/asound.conf', '') call TestExtension("alsaconf", "/etc/asound.conf", "")
call TestExtension('alsaconf', '/media/foo/etc/asound.conf', '') call TestExtension("alsaconf", "/media/foo/etc/asound.conf", "")
" Arc Macro Language " Arc Macro Language
call TestExtension('aml', 'foobar.aml', '') call TestExtension("aml", "foobar.aml", "")
" APT config file " APT config file
call TestExtension('aptconf', 'apt.conf', '') call TestExtension("aptconf", "apt.conf", "")
call TestExtension('aptconf', '/root/.aptitude/config', '') call TestExtension("aptconf", "/root/.aptitude/config", "")
call TestExtension('aptconf', '/etc/apt/apt.conf.d/foo_bar-12', '') call TestExtension("aptconf", "/etc/apt/apt.conf.d/foo_bar-12", "")
call TestExtension('aptconf', '/etc/apt/apt.conf.d/foo_bar-12.conf', '') call TestExtension("aptconf", "/etc/apt/apt.conf.d/foo_bar-12.conf", "")
call TestExtension('', '/etc/apt/apt.conf.d/.gsdf', '') call TestExtension("", "/etc/apt/apt.conf.d/.gsdf", "")
" Arch Inventory file " Arch Inventory file
call TestExtension('arch', '.arch-inventory', '') call TestExtension("arch", ".arch-inventory", "")
call TestExtension('arch', '=tagging-method', '') call TestExtension("arch", "=tagging-method", "")
" ART*Enterprise (formerly ART-IM) " ART*Enterprise (formerly ART-IM)
call TestExtension('art', 'foobar.art', '') call TestExtension("art", "foobar.art", "")
" AsciiDoc " AsciiDoc
call TestExtension('asciidoc', 'foobar.asciidoc', '') call TestExtension("asciidoc", "foobar.asciidoc", "")
call TestExtension('asciidoc', 'foobar.adoc', '') call TestExtension("asciidoc", "foobar.adoc", "")
" ASN.1 " ASN.1
call TestExtension('asn', 'foobar.asn', '') call TestExtension("asn", "foobar.asn", "")
call TestExtension('asn', 'foobar.asn1', '') call TestExtension("asn", "foobar.asn1", "")
" Active Server Pages (with Visual Basic Script) " Active Server Pages (with Visual Basic Script)
call TestExtension('aspvbs', 'foobar.asa', '') call TestExtension("aspvbs", "foobar.asa", "")
let g:filetype_asa = 'fizfuz' let g:filetype_asa = "fizfuz"
call TestExtension('fizfuz', 'foobar.asa', '') call TestExtension("fizfuz", "foobar.asa", "")
" Active Server Pages (with Perl or Visual Basic Script) " Active Server Pages (with Perl or Visual Basic Script)
call TestExtension('aspvbs', 'vbs.asp', "") call TestExtension("aspvbs", "vbs.asp", "")
call TestExtension('aspperl', 'perl.asp', "<Job ID=\"DropFiles\">\n<script language=\"PerlScript\">\n</script>\n</Job>") call TestExtension("aspperl", "perl.asp", "<Job ID=\"DropFiles\">\n<script language=\"PerlScript\">\n</script>\n</Job>")
let g:filetype_asp = 'fizfuz' let g:filetype_asp = "fizfuz"
call TestExtension('fizfuz', 'fizfuz.asp', '') call TestExtension("fizfuz", "fizfuz.asp", "")
" Grub (must be before catch *.lst) " Grub (must be before catch *.lst)
call TestExtension('grub', '/boot/grub/menu.lst', '') call TestExtension("grub", "/boot/grub/menu.lst", "")
call TestExtension('grub', '/media/foobar/boot/grub/menu.lst', '') call TestExtension("grub", "/media/foobar/boot/grub/menu.lst", "")
call TestExtension('grub', '/boot/grub/grub.conf', '') call TestExtension("grub", "/boot/grub/grub.conf", "")
call TestExtension('grub', '/media/foobar/boot/grub/grub.conf', '') call TestExtension("grub", "/media/foobar/boot/grub/grub.conf", "")
call TestExtension('grub', '/etc/grub.conf', '') call TestExtension("grub", "/etc/grub.conf", "")
call TestExtension('grub', '/media/foobar/etc/grub.conf', '') call TestExtension("grub", "/media/foobar/etc/grub.conf", "")
" Assembly (all kinds) " Assembly (all kinds)
" *.lst is not pure assembly, it has two extra columns (address, byte codes) " *.lst is not pure assembly, it has two extra columns (address, byte codes)
@@ -155,93 +155,105 @@ call TestExtension('grub', '/media/foobar/etc/grub.conf', '')
au BufNewFile,BufRead *.asm,*.[sS],*.[aA],*.mac,*.lst call dist#ft#FTasm() au BufNewFile,BufRead *.asm,*.[sS],*.[aA],*.mac,*.lst call dist#ft#FTasm()
" Macro (VAX) " Macro (VAX)
call TestExtension('vmasm', 'foobar.mar', '') call TestExtension("vmasm", "foobar.mar", "")
" Atlas " Atlas
call TestExtension('atlas', 'foobar.atl', '') call TestExtension("atlas", "foobar.atl", "")
call TestExtension('atlas', 'foobar.as', '') call TestExtension("atlas", "foobar.as", "")
" Autoit v3 " Autoit v3
call TestExtension('autoit', 'foobar.au3', '') call TestExtension("autoit", "foobar.au3", "")
" Autohotkey " Autohotkey
call TestExtension('autohotkey', 'foobar.ahk', '') call TestExtension("autohotkey", "foobar.ahk", "")
" Automake " Automake
call TestExtension('automake', 'Makefile.am', '') call TestExtension("automake", "Makefile.am", "")
call TestExtension('automake', 'makefile.am', '') call TestExtension("automake", "makefile.am", "")
call TestExtension('automake', 'GNUmakefile.am', '') call TestExtension("automake", "GNUmakefile.am", "")
" Autotest .at files are actually m4 " Autotest .at files are actually m4
call TestExtension('m4', 'foobar.at', '') call TestExtension("m4", "foobar.at", "")
" Avenue " Avenue
call TestExtension('ave', 'foobar.ave', '') call TestExtension("ave", "foobar.ave", "")
" Awk " Awk
call TestExtension('awk', 'foobar.awk', '') call TestExtension("awk", "foobar.awk", "")
" vim-polyglot only " vim-polyglot only
call TestExtension('blade', 'test.blade.php', '') call TestExtension("blade", "test.blade.php", "")
call TestExtension('yaml.ansible', 'playbook.yml', '') call TestExtension("yaml.ansible", "playbook.yml", "")
call TestExtension('yaml.ansible', 'host_vars/foobar', '') call TestExtension("yaml.ansible", "host_vars/foobar", "")
call TestExtension('yaml.ansible', 'handlers.foobar.yaml', '') call TestExtension("yaml.ansible", "handlers.foobar.yaml", "")
call TestExtension('yaml.ansible', 'requirements.yaml', '') call TestExtension("yaml.ansible", "requirements.yaml", "")
call TestExtension('ps1xml', 'foobar.ps1xml', '') call TestExtension("ps1xml", "foobar.ps1xml", "")
call TestExtension('terraform', 'terraform.tf', '') call TestExtension("terraform", "terraform.tf", "")
call TestExtension('idris2', 'foobar.idr', '') call TestExtension("idris2", "foobar.idr", "")
call TestExtension('idris', 'foobar.idr', "pkgs : List String\npkgs = [\"NCurses\", \"Readline\"]") call TestExtension("idris", "foobar.idr", "pkgs : List String\npkgs = [\"NCurses\", \"Readline\"]")
let g:filetype_idr = 'fizfuz' let g:filetype_idr = "fizfuz"
call TestExtension('fizfuz', 'fizfuz.idr', '') call TestExtension("fizfuz", "fizfuz.idr", "")
" .m extension " .m extension
call TestExtension('octave', 'matlab.m', '') call TestExtension("octave", "matlab.m", "")
call TestExtension('objc', 'objc.m', "\n\n #import <Foundation/Foundation.h>") call TestExtension("objc", "objc.m", "\n\n #import <Foundation/Foundation.h>")
call TestExtension('octave', 'objc.m', "results_ub_times=zeros(2,2,M);\n%results pour la lower bound") call TestExtension("octave", "objc.m", "results_ub_times=zeros(2,2,M);\n%results pour la lower bound")
call TestExtension('mma', 'mathematica.m', "newcase[ \"00003\" ];\n (* Hello world *)") call TestExtension("mma", "mathematica.m", "newcase[ \"00003\" ];\n (* Hello world *)")
call TestExtension('murphi', 'murphi.m', "type\n square: 1 .. 9") call TestExtension("murphi", "murphi.m", "type\n square: 1 .. 9")
call TestExtension('murphi', 'murphi.m', "something\n--foobar") call TestExtension("murphi", "murphi.m", "something\n--foobar")
call TestExtension('octave', 'percentcomment.m', "hello world\n%foobar") call TestExtension("octave", "percentcomment.m", "hello world\n%foobar")
call TestExtension('objc', 'comment.m', "\n/* Hello world */") call TestExtension("objc", "comment.m", "\n/* Hello world */")
let g:filetype_m = 'fizfuz' let g:filetype_m = "fizfuz"
call TestExtension('fizfuz', 'fizfuz.m', '') call TestExtension("fizfuz", "fizfuz.m", "")
" .fs extension " .fs extension
call TestExtension('forth', 'empty.fs', '') call TestExtension("forth", "empty.fs", "")
call TestExtension('fsharp', 'fsharp.fs', "let myInt = 5") call TestExtension("fsharp", "fsharp.fs", "let myInt = 5")
call TestExtension('glsl', 'glsl.fs', "//#version 120\nvoid main() {}") call TestExtension("glsl", "glsl.fs", "//#version 120\nvoid main() {}")
let g:filetype_fs = 'fizfuz' let g:filetype_fs = "fizfuz"
call TestExtension('fizfuz', 'fizfuz.fs', '') call TestExtension("fizfuz", "fizfuz.fs", "")
" .re extension " .re extension
call TestExtension('reason', 'empty.re', '') call TestExtension("reason", "empty.re", "")
call TestExtension('cpp', 'cpp.re', '#include "config.h"') call TestExtension("cpp", "cpp.re", "#include \"config.h\"")
call TestExtension('cpp', 'cpp2.re', '#ifdef HAVE_CONFIG_H') call TestExtension("cpp", "cpp2.re", "#ifdef HAVE_CONFIG_H")
call TestExtension('cpp', 'cpp3.re', '#define YYCTYPE unsigned char') call TestExtension("cpp", "cpp3.re", "#define YYCTYPE unsigned char")
call TestExtension('reason', 'react.re', 'ReasonReact.Router.push("");') call TestExtension("reason", "react.re", "ReasonReact.Router.push('');")
" .bas extension
call TestExtension("vbnet", "vb.vb", "")
call TestExtension("basic", "empty.bas", "")
call TestExtension("vb", "vb1.bas", "Attribute VB_Name = \"Class1\"")
call TestExtension("vb", "vb2.bas", "VERSION 5.00\nBegin VB.Form Form1")
call TestExtension("vb", "vb2.bas", "VERSION 5.00\nBegin VB.Form Form1")
call TestExtension("vb", "vb.sba", "")
call TestExtension("vb", "vb.vbs", "")
call TestExtension("vb", "vb.dsm", "")
call TestExtension("vb", "vb.dsm", "")
call TestExtension("vb", "vb.ctl", "")
" Idris " Idris
call TestExtension('idris', 'lowercase.idr', '--idris1') call TestExtension("idris", "lowercase.idr", "--idris1")
call TestExtension('idris', 'uppercase.idr', '--Idris1') call TestExtension("idris", "uppercase.idr", "--Idris1")
call TestExtension('idris', 'start-space-l.idr', '-- idris1') call TestExtension("idris", "start-space-l.idr", "-- idris1")
call TestExtension('idris', 'start-space-u.idr', '-- Idris1') call TestExtension("idris", "start-space-u.idr", "-- Idris1")
call TestExtension('idris', 'two-spaces-l.idr', '-- idris 1') call TestExtension("idris", "two-spaces-l.idr", "-- idris 1")
call TestExtension('idris', 'two-spaces-u.idr', '-- Idris 1') call TestExtension("idris", "two-spaces-u.idr", "-- Idris 1")
"call TestExtension('idris', 'mypkg.ipkg', 'package mypkg\n\npkgs = pruviloj, lightyear') "call TestExtension("idris", "mypkg.ipkg", "package mypkg\n\npkgs = pruviloj, lightyear")
call TestExtension('idris', 'use-type-prov.idr', '%language TypeProviders') call TestExtension("idris", "use-type-prov.idr", "%language TypeProviders")
call TestExtension('idris', 'use-elab-refl.idr', '%language ElabReflection') call TestExtension("idris", "use-elab-refl.idr", "%language ElabReflection")
call TestExtension('idris', 'access-modifier.idr', '%access export\n\npublic export\nMyTest : Type-> Type\n\nfact : Nat -> Nat') call TestExtension("idris", "access-modifier.idr", "%access export\n\npublic export\nMyTest : Type-> Type\n\nfact : Nat -> Nat")
call TestExtension('idris2', 'lowercase.idr', '--idris2') call TestExtension("idris2", "lowercase.idr", "--idris2")
call TestExtension('idris2', 'uppercase.idr', '--Idris2') call TestExtension("idris2", "uppercase.idr", "--Idris2")
call TestExtension('idris2', 'start-space-l.idr', '-- idris2') call TestExtension("idris2", "start-space-l.idr", "-- idris2")
call TestExtension('idris2', 'start-space-u.idr', '-- Idris2') call TestExtension("idris2", "start-space-u.idr", "-- Idris2")
call TestExtension('idris2', 'two-spaces-l.idr', '-- idris 2') call TestExtension("idris2", "two-spaces-l.idr", "-- idris 2")
call TestExtension('idris2', 'two-spaces-u.idr', '-- Idris 2') call TestExtension("idris2", "two-spaces-u.idr", "-- Idris 2")
call TestExtension('idris2', 'mypkg.ipkg', 'package mypkg\n\ndepends = effects') call TestExtension("idris2", "mypkg.ipkg", "package mypkg\n\ndepends = effects")
call TestExtension('idris2', 'use-post-proj.idr', '%language PostfixProjections') call TestExtension("idris2", "use-post-proj.idr", "%language PostfixProjections")
" Literate Idris " Literate Idris
call TestExtension('lidris', 'lidris-1.lidr', "Some test plaintext\n\n> --idris1\n> myfact : Nat -> Nat\n> myfact Z = 1\n> myfact (S k) = (S k) * myfact k\n\nMore plaintext") call TestExtension("lidris", "lidris-1.lidr", "Some test plaintext\n\n> --idris1\n> myfact : Nat -> Nat\n> myfact Z = 1\n> myfact (S k) = (S k) * myfact k\n\nMore plaintext")
call TestExtension('lidris2', 'lidris-2.lidr', "Some test plaintext\n\n> --idris2\n> myfact : Nat -> Nat\n> myfact Z = 1\n> myfact (S k) = (S k) * myfact k\n\nMore plaintext") call TestExtension("lidris2", "lidris-2.lidr", "Some test plaintext\n\n> --idris2\n> myfact : Nat -> Nat\n> myfact Z = 1\n> myfact (S k) = (S k) * myfact k\n\nMore plaintext")

View File

@@ -228,3 +228,5 @@ call TestFiletype('zephir')
call TestFiletype('zir') call TestFiletype('zir')
call TestFiletype('zig') call TestFiletype('zig')
call TestFiletype('trasys') call TestFiletype('trasys')
call TestFiletype('basic')
call TestFiletype('vb')

170
syntax/basic.vim Normal file
View File

@@ -0,0 +1,170 @@
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'basic') == -1
" Vim syntax file
" Language: BASIC
" Maintainer: Allan Kelly <allan@fruitloaf.co.uk>
" Last Change: 2011 Dec 25 by Thilo Six
" First version based on Micro$soft QBASIC circa 1989, as documented in
" 'Learn BASIC Now' by Halvorson&Rygmyr. Microsoft Press 1989.
" This syntax file not a complete implementation yet. Send suggestions to the
" maintainer.
" quit when a syntax file was already loaded
if exists("b:current_syntax")
finish
endif
let s:cpo_save = &cpo
set cpo&vim
" A bunch of useful BASIC keywords
syn keyword basicStatement BEEP beep Beep BLOAD bload Bload BSAVE bsave Bsave
syn keyword basicStatement CALL call Call ABSOLUTE absolute Absolute
syn keyword basicStatement CHAIN chain Chain CHDIR chdir Chdir
syn keyword basicStatement CIRCLE circle Circle CLEAR clear Clear
syn keyword basicStatement CLOSE close Close CLS cls Cls COLOR color Color
syn keyword basicStatement COM com Com COMMON common Common
syn keyword basicStatement CONST const Const DATA data Data
syn keyword basicStatement DECLARE declare Declare DEF def Def
syn keyword basicStatement DEFDBL defdbl Defdbl DEFINT defint Defint
syn keyword basicStatement DEFLNG deflng Deflng DEFSNG defsng Defsng
syn keyword basicStatement DEFSTR defstr Defstr DIM dim Dim
syn keyword basicStatement DO do Do LOOP loop Loop
syn keyword basicStatement DRAW draw Draw END end End
syn keyword basicStatement ENVIRON environ Environ ERASE erase Erase
syn keyword basicStatement ERROR error Error EXIT exit Exit
syn keyword basicStatement FIELD field Field FILES files Files
syn keyword basicStatement FOR for For NEXT next Next
syn keyword basicStatement FUNCTION function Function GET get Get
syn keyword basicStatement GOSUB gosub Gosub GOTO goto Goto
syn keyword basicStatement IF if If THEN then Then ELSE else Else
syn keyword basicStatement INPUT input Input INPUT# input# Input#
syn keyword basicStatement IOCTL ioctl Ioctl KEY key Key
syn keyword basicStatement KILL kill Kill LET let Let
syn keyword basicStatement LINE line Line LOCATE locate Locate
syn keyword basicStatement LOCK lock Lock UNLOCK unlock Unlock
syn keyword basicStatement LPRINT lprint Lprint USING using Using
syn keyword basicStatement LSET lset Lset MKDIR mkdir Mkdir
syn keyword basicStatement NAME name Name ON on On
syn keyword basicStatement ERROR error Error OPEN open Open
syn keyword basicStatement OPTION option Option BASE base Base
syn keyword basicStatement OUT out Out PAINT paint Paint
syn keyword basicStatement PALETTE palette Palette PCOPY pcopy Pcopy
syn keyword basicStatement PEN pen Pen PLAY play Play
syn keyword basicStatement PMAP pmap Pmap POKE poke Poke
syn keyword basicStatement PRESET preset Preset PRINT print Print
syn keyword basicStatement PRINT# print# Print# USING using Using
syn keyword basicStatement PSET pset Pset PUT put Put
syn keyword basicStatement RANDOMIZE randomize Randomize READ read Read
syn keyword basicStatement REDIM redim Redim RESET reset Reset
syn keyword basicStatement RESTORE restore Restore RESUME resume Resume
syn keyword basicStatement RETURN return Return RMDIR rmdir Rmdir
syn keyword basicStatement RSET rset Rset RUN run Run
syn keyword basicStatement SEEK seek Seek SELECT select Select
syn keyword basicStatement CASE case Case SHARED shared Shared
syn keyword basicStatement SHELL shell Shell SLEEP sleep Sleep
syn keyword basicStatement SOUND sound Sound STATIC static Static
syn keyword basicStatement STOP stop Stop STRIG strig Strig
syn keyword basicStatement SUB sub Sub SWAP swap Swap
syn keyword basicStatement SYSTEM system System TIMER timer Timer
syn keyword basicStatement TROFF troff Troff TRON tron Tron
syn keyword basicStatement TYPE type Type UNLOCK unlock Unlock
syn keyword basicStatement VIEW view View WAIT wait Wait
syn keyword basicStatement WHILE while While WEND wend Wend
syn keyword basicStatement WIDTH width Width WINDOW window Window
syn keyword basicStatement WRITE write Write DATE$ date$ Date$
syn keyword basicStatement MID$ mid$ Mid$ TIME$ time$ Time$
syn keyword basicFunction ABS abs Abs ASC asc Asc
syn keyword basicFunction ATN atn Atn CDBL cdbl Cdbl
syn keyword basicFunction CINT cint Cint CLNG clng Clng
syn keyword basicFunction COS cos Cos CSNG csng Csng
syn keyword basicFunction CSRLIN csrlin Csrlin CVD cvd Cvd
syn keyword basicFunction CVDMBF cvdmbf Cvdmbf CVI cvi Cvi
syn keyword basicFunction CVL cvl Cvl CVS cvs Cvs
syn keyword basicFunction CVSMBF cvsmbf Cvsmbf EOF eof Eof
syn keyword basicFunction ERDEV erdev Erdev ERL erl Erl
syn keyword basicFunction ERR err Err EXP exp Exp
syn keyword basicFunction FILEATTR fileattr Fileattr FIX fix Fix
syn keyword basicFunction FRE fre Fre FREEFILE freefile Freefile
syn keyword basicFunction INP inp Inp INSTR instr Instr
syn keyword basicFunction INT int Int LBOUND lbound Lbound
syn keyword basicFunction LEN len Len LOC loc Loc
syn keyword basicFunction LOF lof Lof LOG log Log
syn keyword basicFunction LPOS lpos Lpos PEEK peek Peek
syn keyword basicFunction PEN pen Pen POINT point Point
syn keyword basicFunction POS pos Pos RND rnd Rnd
syn keyword basicFunction SADD sadd Sadd SCREEN screen Screen
syn keyword basicFunction SEEK seek Seek SETMEM setmem Setmem
syn keyword basicFunction SGN sgn Sgn SIN sin Sin
syn keyword basicFunction SPC spc Spc SQR sqr Sqr
syn keyword basicFunction STICK stick Stick STRIG strig Strig
syn keyword basicFunction TAB tab Tab TAN tan Tan
syn keyword basicFunction UBOUND ubound Ubound VAL val Val
syn keyword basicFunction VALPTR valptr Valptr VALSEG valseg Valseg
syn keyword basicFunction VARPTR varptr Varptr VARSEG varseg Varseg
syn keyword basicFunction CHR$ Chr$ chr$ COMMAND$ command$ Command$
syn keyword basicFunction DATE$ date$ Date$ ENVIRON$ environ$ Environ$
syn keyword basicFunction ERDEV$ erdev$ Erdev$ HEX$ hex$ Hex$
syn keyword basicFunction INKEY$ inkey$ Inkey$ INPUT$ input$ Input$
syn keyword basicFunction IOCTL$ ioctl$ Ioctl$ LCASES$ lcases$ Lcases$
syn keyword basicFunction LAFT$ laft$ Laft$ LTRIM$ ltrim$ Ltrim$
syn keyword basicFunction MID$ mid$ Mid$ MKDMBF$ mkdmbf$ Mkdmbf$
syn keyword basicFunction MKD$ mkd$ Mkd$ MKI$ mki$ Mki$
syn keyword basicFunction MKL$ mkl$ Mkl$ MKSMBF$ mksmbf$ Mksmbf$
syn keyword basicFunction MKS$ mks$ Mks$ OCT$ oct$ Oct$
syn keyword basicFunction RIGHT$ right$ Right$ RTRIM$ rtrim$ Rtrim$
syn keyword basicFunction SPACE$ space$ Space$ STR$ str$ Str$
syn keyword basicFunction STRING$ string$ String$ TIME$ time$ Time$
syn keyword basicFunction UCASE$ ucase$ Ucase$ VARPTR$ varptr$ Varptr$
syn keyword basicTodo contained TODO
"integer number, or floating point number without a dot.
syn match basicNumber "\<\d\+\>"
"floating point number, with dot
syn match basicNumber "\<\d\+\.\d*\>"
"floating point number, starting with a dot
syn match basicNumber "\.\d\+\>"
" String and Character contstants
syn match basicSpecial contained "\\\d\d\d\|\\."
syn region basicString start=+"+ skip=+\\\\\|\\"+ end=+"+ contains=basicSpecial
syn region basicComment start="REM" end="$" contains=basicTodo
syn region basicComment start="^[ \t]*'" end="$" contains=basicTodo
syn region basicLineNumber start="^\d" end="\s"
syn match basicTypeSpecifier "[a-zA-Z0-9][\$%&!#]"ms=s+1
" Used with OPEN statement
syn match basicFilenumber "#\d\+"
"syn sync ccomment basicComment
" syn match basicMathsOperator "[<>+\*^/\\=-]"
syn match basicMathsOperator "-\|=\|[:<>+\*^/\\]\|AND\|OR"
" Define the default highlighting.
" Only when an item doesn't have highlighting yet
hi def link basicLabel Label
hi def link basicConditional Conditional
hi def link basicRepeat Repeat
hi def link basicLineNumber Comment
hi def link basicNumber Number
hi def link basicError Error
hi def link basicStatement Statement
hi def link basicString String
hi def link basicComment Comment
hi def link basicSpecial Special
hi def link basicTodo Todo
hi def link basicFunction Identifier
hi def link basicTypeSpecifier Type
hi def link basicFilenumber basicTypeSpecifier
"hi basicMathsOperator term=bold cterm=bold gui=bold
let b:current_syntax = "basic"
let &cpo = s:cpo_save
unlet s:cpo_save
" vim: ts=8
endif

369
syntax/vb.vim Normal file
View File

@@ -0,0 +1,369 @@
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'visual-basic') == -1
" Vim syntax file
" Language: Visual Basic
" Maintainer: Tim Chase <vb.vim@tim.thechases.com>
" Former Maintainer: Robert M. Cortopassi <cortopar@mindspring.com>
" (tried multiple times to contact, but email bounced)
" Last Change:
" 2005 May 25 Synched with work by Thomas Barthel
" 2004 May 30 Added a few keywords
" This was thrown together after seeing numerous requests on the
" VIM and VIM-DEV mailing lists. It is by no means complete.
" Send comments, suggestions and requests to the maintainer.
" quit when a syntax file was already loaded
if exists("b:current_syntax")
finish
endif
" VB is case insensitive
syn case ignore
syn keyword vbConditional If Then ElseIf Else Select Case
syn keyword vbOperator AddressOf And ByRef ByVal Eqv Imp In
syn keyword vbOperator Is Like Mod Not Or To Xor
syn match vbOperator "[()+.,\-/*=&]"
syn match vbOperator "[<>]=\="
syn match vbOperator "<>"
syn match vbOperator "\s\+_$"
syn keyword vbBoolean True False
syn keyword vbConst Null Nothing
syn keyword vbRepeat Do For ForEach Loop Next
syn keyword vbRepeat Step To Until Wend While
syn keyword vbEvents AccessKeyPress Activate ActiveRowChanged
syn keyword vbEvents AfterAddFile AfterChangeFileName AfterCloseFile
syn keyword vbEvents AfterColEdit AfterColUpdate AfterDelete
syn keyword vbEvents AfterInsert AfterLabelEdit AfterRemoveFile
syn keyword vbEvents AfterUpdate AfterWriteFile AmbientChanged
syn keyword vbEvents ApplyChanges Associate AsyncProgress
syn keyword vbEvents AsyncReadComplete AsyncReadProgress AxisActivated
syn keyword vbEvents AxisLabelActivated AxisLabelSelected
syn keyword vbEvents AxisLabelUpdated AxisSelected AxisTitleActivated
syn keyword vbEvents AxisTitleSelected AxisTitleUpdated AxisUpdated
syn keyword vbEvents BeforeClick BeforeColEdit BeforeColUpdate
syn keyword vbEvents BeforeConnect BeforeDelete BeforeInsert
syn keyword vbEvents BeforeLabelEdit BeforeLoadFile BeforeUpdate
syn keyword vbEvents BeginRequest BeginTrans ButtonClick
syn keyword vbEvents ButtonCompleted ButtonDropDown ButtonGotFocus
syn keyword vbEvents ButtonLostFocus CallbackKeyDown Change Changed
syn keyword vbEvents ChartActivated ChartSelected ChartUpdated Click
syn keyword vbEvents Close CloseQuery CloseUp ColEdit ColResize
syn keyword vbEvents Collapse ColumnClick CommitTrans Compare
syn keyword vbEvents ConfigChageCancelled ConfigChanged
syn keyword vbEvents ConfigChangedCancelled Connect ConnectionRequest
syn keyword vbEvents CurrentRecordChanged DECommandAdded
syn keyword vbEvents DECommandPropertyChanged DECommandRemoved
syn keyword vbEvents DEConnectionAdded DEConnectionPropertyChanged
syn keyword vbEvents DEConnectionRemoved DataArrival DataChanged
syn keyword vbEvents DataUpdated DateClicked DblClick Deactivate
syn keyword vbEvents DevModeChange DeviceArrival DeviceOtherEvent
syn keyword vbEvents DeviceQueryRemove DeviceQueryRemoveFailed
syn keyword vbEvents DeviceRemoveComplete DeviceRemovePending
syn keyword vbEvents Disconnect DisplayChanged Dissociate
syn keyword vbEvents DoGetNewFileName Done DonePainting DownClick
syn keyword vbEvents DragDrop DragOver DropDown EditProperty EditQuery
syn keyword vbEvents EndRequest EnterCell EnterFocus ExitFocus Expand
syn keyword vbEvents FontChanged FootnoteActivated FootnoteSelected
syn keyword vbEvents FootnoteUpdated Format FormatSize GotFocus
syn keyword vbEvents HeadClick HeightChanged Hide InfoMessage
syn keyword vbEvents IniProperties InitProperties Initialize
syn keyword vbEvents ItemActivated ItemAdded ItemCheck ItemClick
syn keyword vbEvents ItemReloaded ItemRemoved ItemRenamed
syn keyword vbEvents ItemSeletected KeyDown KeyPress KeyUp LeaveCell
syn keyword vbEvents LegendActivated LegendSelected LegendUpdated
syn keyword vbEvents LinkClose LinkError LinkExecute LinkNotify
syn keyword vbEvents LinkOpen Load LostFocus MouseDown MouseMove
syn keyword vbEvents MouseUp NodeCheck NodeClick OLECompleteDrag
syn keyword vbEvents OLEDragDrop OLEDragOver OLEGiveFeedback OLESetData
syn keyword vbEvents OLEStartDrag ObjectEvent ObjectMove OnAddNew
syn keyword vbEvents OnComm Paint PanelClick PanelDblClick PathChange
syn keyword vbEvents PatternChange PlotActivated PlotSelected
syn keyword vbEvents PlotUpdated PointActivated PointLabelActivated
syn keyword vbEvents PointLabelSelected PointLabelUpdated PointSelected
syn keyword vbEvents PointUpdated PowerQuerySuspend PowerResume
syn keyword vbEvents PowerStatusChanged PowerSuspend ProcessTag
syn keyword vbEvents ProcessingTimeout QueryChangeConfig QueryClose
syn keyword vbEvents QueryComplete QueryCompleted QueryTimeout
syn keyword vbEvents QueryUnload ReadProperties RepeatedControlLoaded
syn keyword vbEvents RepeatedControlUnloaded Reposition
syn keyword vbEvents RequestChangeFileName RequestWriteFile Resize
syn keyword vbEvents ResultsChanged RetainedProject RollbackTrans
syn keyword vbEvents RowColChange RowCurrencyChange RowResize
syn keyword vbEvents RowStatusChanged Scroll SelChange SelectionChanged
syn keyword vbEvents SendComplete SendProgress SeriesActivated
syn keyword vbEvents SeriesSelected SeriesUpdated SettingChanged Show
syn keyword vbEvents SplitChange Start StateChanged StatusUpdate
syn keyword vbEvents SysColorsChanged Terminate TimeChanged Timer
syn keyword vbEvents TitleActivated TitleSelected TitleUpdated
syn keyword vbEvents UnboundAddData UnboundDeleteRow
syn keyword vbEvents UnboundGetRelativeBookmark UnboundReadData
syn keyword vbEvents UnboundWriteData Unformat Unload UpClick Updated
syn keyword vbEvents UserEvent Validate ValidationError
syn keyword vbEvents VisibleRecordChanged WillAssociate WillChangeData
syn keyword vbEvents WillDissociate WillExecute WillUpdateRows
syn keyword vbEvents WriteProperties
syn keyword vbFunction Abs Array Asc AscB AscW Atn Avg BOF CBool CByte
syn keyword vbFunction CCur CDate CDbl CInt CLng CSng CStr CVDate CVErr
syn keyword vbFunction CVar CallByName Cdec Choose Chr ChrB ChrW Command
syn keyword vbFunction Cos Count CreateObject CurDir DDB Date DateAdd
syn keyword vbFunction DateDiff DatePart DateSerial DateValue Day Dir
syn keyword vbFunction DoEvents EOF Environ Error Exp FV FileAttr
syn keyword vbFunction FileDateTime FileLen FilterFix Fix Format
syn keyword vbFunction FormatCurrency FormatDateTime FormatNumber
syn keyword vbFunction FormatPercent FreeFile GetAllStrings GetAttr
syn keyword vbFunction GetAutoServerSettings GetObject GetSetting Hex
syn keyword vbFunction Hour IIf IMEStatus IPmt InStr Input InputB
syn keyword vbFunction InputBox InstrB Int IsArray IsDate IsEmpty IsError
syn keyword vbFunction IsMissing IsNull IsNumeric IsObject Join LBound
syn keyword vbFunction LCase LOF LTrim Left LeftB Len LenB LoadPicture
syn keyword vbFunction LoadResData LoadResPicture LoadResString Loc Log
syn keyword vbFunction MIRR Max Mid MidB Min Minute Month MonthName
syn keyword vbFunction MsgBox NPV NPer Now Oct PPmt PV Partition Pmt
syn keyword vbFunction QBColor RGB RTrim Rate Replace Right RightB Rnd
syn keyword vbFunction Round SLN SYD Second Seek Sgn Shell Sin Space Spc
syn keyword vbFunction Split Sqr StDev StDevP Str StrComp StrConv
syn keyword vbFunction StrReverse String Sum Switch Tab Tan Time
syn keyword vbFunction TimeSerial TimeValue Timer Trim TypeName UBound
syn keyword vbFunction UCase Val Var VarP VarType Weekday WeekdayName
syn keyword vbFunction Year
syn keyword vbMethods AboutBox Accept Activate Add AddCustom AddFile
syn keyword vbMethods AddFromFile AddFromGuid AddFromString
syn keyword vbMethods AddFromTemplate AddItem AddNew AddToAddInToolbar
syn keyword vbMethods AddToolboxProgID Append AppendAppendChunk
syn keyword vbMethods AppendChunk Arrange Assert AsyncRead BatchUpdate
syn keyword vbMethods BeginQueryEdit BeginTrans Bind BuildPath
syn keyword vbMethods CanPropertyChange Cancel CancelAsyncRead
syn keyword vbMethods CancelBatch CancelUpdate CaptureImage CellText
syn keyword vbMethods CellValue Circle Clear ClearFields ClearSel
syn keyword vbMethods ClearSelCols ClearStructure Clone Close Cls
syn keyword vbMethods ColContaining CollapseAll ColumnSize CommitTrans
syn keyword vbMethods CompactDatabase Compose Connect Copy CopyFile
syn keyword vbMethods CopyFolder CopyQueryDef Count CreateDatabase
syn keyword vbMethods CreateDragImage CreateEmbed CreateField
syn keyword vbMethods CreateFolder CreateGroup CreateIndex CreateLink
syn keyword vbMethods CreatePreparedStatement CreatePropery CreateQuery
syn keyword vbMethods CreateQueryDef CreateRelation CreateTableDef
syn keyword vbMethods CreateTextFile CreateToolWindow CreateUser
syn keyword vbMethods CreateWorkspace Customize Cut Delete
syn keyword vbMethods DeleteColumnLabels DeleteColumns DeleteFile
syn keyword vbMethods DeleteFolder DeleteLines DeleteRowLabels
syn keyword vbMethods DeleteRows DeselectAll DesignerWindow DoVerb Drag
syn keyword vbMethods Draw DriveExists Edit EditCopy EditPaste EndDoc
syn keyword vbMethods EnsureVisible EstablishConnection Execute Exists
syn keyword vbMethods Expand Export ExportReport ExtractIcon Fetch
syn keyword vbMethods FetchVerbs FileExists Files FillCache Find
syn keyword vbMethods FindFirst FindItem FindLast FindNext FindPrevious
syn keyword vbMethods FolderExists Forward GetAbsolutePathName
syn keyword vbMethods GetBaseName GetBookmark GetChunk GetClipString
syn keyword vbMethods GetData GetDrive GetDriveName GetFile GetFileName
syn keyword vbMethods GetFirstVisible GetFolder GetFormat GetHeader
syn keyword vbMethods GetLineFromChar GetNumTicks GetParentFolderName
syn keyword vbMethods GetRows GetSelectedPart GetSelection
syn keyword vbMethods GetSpecialFolder GetTempName GetText
syn keyword vbMethods GetVisibleCount GoBack GoForward Hide HitTest
syn keyword vbMethods HoldFields Idle Import InitializeLabels Insert
syn keyword vbMethods InsertColumnLabels InsertColumns InsertFile
syn keyword vbMethods InsertLines InsertObjDlg InsertRowLabels
syn keyword vbMethods InsertRows Item Keys KillDoc Layout Line Lines
syn keyword vbMethods LinkExecute LinkPoke LinkRequest LinkSend Listen
syn keyword vbMethods LoadFile LoadResData LoadResPicture LoadResString
syn keyword vbMethods LogEvent MakeCompileFile MakeCompiledFile
syn keyword vbMethods MakeReplica MoreResults Move MoveData MoveFile
syn keyword vbMethods MoveFirst MoveFolder MoveLast MoveNext
syn keyword vbMethods MovePrevious NavigateTo NewPage NewPassword
syn keyword vbMethods NextRecordset OLEDrag OnAddinsUpdate OnConnection
syn keyword vbMethods OnDisconnection OnStartupComplete Open
syn keyword vbMethods OpenAsTextStream OpenConnection OpenDatabase
syn keyword vbMethods OpenQueryDef OpenRecordset OpenResultset OpenURL
syn keyword vbMethods Overlay PSet PaintPicture PastSpecialDlg Paste
syn keyword vbMethods PeekData Play Point PopulatePartial PopupMenu
syn keyword vbMethods Print PrintForm PrintReport PropertyChanged Quit
syn keyword vbMethods Raise RandomDataFill RandomFillColumns
syn keyword vbMethods RandomFillRows ReFill Read ReadAll ReadFromFile
syn keyword vbMethods ReadLine ReadProperty Rebind Refresh RefreshLink
syn keyword vbMethods RegisterDatabase ReleaseInstance Reload Remove
syn keyword vbMethods RemoveAddInFromToolbar RemoveAll RemoveItem Render
syn keyword vbMethods RepairDatabase ReplaceLine Reply ReplyAll Requery
syn keyword vbMethods ResetCustom ResetCustomLabel ResolveName
syn keyword vbMethods RestoreToolbar Resync Rollback RollbackTrans
syn keyword vbMethods RowBookmark RowContaining RowTop Save SaveAs
syn keyword vbMethods SaveFile SaveToFile SaveToOle1File SaveToolbar
syn keyword vbMethods Scale ScaleX ScaleY Scroll SelPrint SelectAll
syn keyword vbMethods SelectPart Send SendData Set SetAutoServerSettings
syn keyword vbMethods SetData SetFocus SetOption SetSelection SetSize
syn keyword vbMethods SetText SetViewport Show ShowColor ShowFont
syn keyword vbMethods ShowHelp ShowOpen ShowPrinter ShowSave
syn keyword vbMethods ShowWhatsThis SignOff SignOn Size Skip SkipLine
syn keyword vbMethods Span Split SplitContaining StartLabelEdit
syn keyword vbMethods StartLogging Stop Synchronize Tag TextHeight
syn keyword vbMethods TextWidth ToDefaults Trace TwipsToChartPart
syn keyword vbMethods TypeByChartType URLFor Update UpdateControls
syn keyword vbMethods UpdateRecord UpdateRow Upto ValidateControls Value
syn keyword vbMethods WhatsThisMode Write WriteBlankLines WriteLine
syn keyword vbMethods WriteProperty WriteTemplate ZOrder
syn keyword vbMethods rdoCreateEnvironment rdoRegisterDataSource
syn keyword vbStatement Alias AppActivate As Base Beep Begin Call ChDir
syn keyword vbStatement ChDrive Close Const Date Declare DefBool DefByte
syn keyword vbStatement DefCur DefDate DefDbl DefDec DefInt DefLng DefObj
syn keyword vbStatement DefSng DefStr DefVar Deftype DeleteSetting Dim Do
syn keyword vbStatement Each ElseIf End Enum Erase Error Event Exit
syn keyword vbStatement Explicit FileCopy For ForEach Function Get GoSub
syn keyword vbStatement GoTo Gosub Implements Kill LSet Let Lib LineInput
syn keyword vbStatement Load Lock Loop Mid MkDir Name Next On OnError Open
syn keyword vbStatement Option Preserve Private Property Public Put RSet
syn keyword vbStatement RaiseEvent Randomize ReDim Redim Reset Resume
syn keyword vbStatement Return RmDir SavePicture SaveSetting Seek SendKeys
syn keyword vbStatement Sendkeys Set SetAttr Static Step Stop Sub Time
syn keyword vbStatement Type Unload Unlock Until Wend While Width With
syn keyword vbStatement Write
syn keyword vbKeyword As Binary ByRef ByVal Date Empty Error Friend Get
syn keyword vbKeyword Input Is Len Lock Me Mid New Nothing Null On
syn keyword vbKeyword Option Optional ParamArray Print Private Property
syn keyword vbKeyword Public PublicNotCreateable OnNewProcessSingleUse
syn keyword vbKeyword InSameProcessMultiUse GlobalMultiUse Resume Seek
syn keyword vbKeyword Set Static Step String Time WithEvents
syn keyword vbTodo contained TODO
"Datatypes
syn keyword vbTypes Boolean Byte Currency Date Decimal Double Empty
syn keyword vbTypes Integer Long Object Single String Variant
"VB defined values
syn keyword vbDefine dbBigInt dbBinary dbBoolean dbByte dbChar
syn keyword vbDefine dbCurrency dbDate dbDecimal dbDouble dbFloat
syn keyword vbDefine dbGUID dbInteger dbLong dbLongBinary dbMemo
syn keyword vbDefine dbNumeric dbSingle dbText dbTime dbTimeStamp
syn keyword vbDefine dbVarBinary
"VB defined values
syn keyword vbDefine vb3DDKShadow vb3DFace vb3DHighlight vb3DLight
syn keyword vbDefine vb3DShadow vbAbort vbAbortRetryIgnore
syn keyword vbDefine vbActiveBorder vbActiveTitleBar vbAlias
syn keyword vbDefine vbApplicationModal vbApplicationWorkspace
syn keyword vbDefine vbAppTaskManager vbAppWindows vbArchive vbArray
syn keyword vbDefine vbBack vbBinaryCompare vbBlack vbBlue vbBoolean
syn keyword vbDefine vbButtonFace vbButtonShadow vbButtonText vbByte
syn keyword vbDefine vbCalGreg vbCalHijri vbCancel vbCr vbCritical
syn keyword vbDefine vbCrLf vbCurrency vbCyan vbDatabaseCompare
syn keyword vbDefine vbDataObject vbDate vbDecimal vbDefaultButton1
syn keyword vbDefine vbDefaultButton2 vbDefaultButton3 vbDefaultButton4
syn keyword vbDefine vbDesktop vbDirectory vbDouble vbEmpty vbError
syn keyword vbDefine vbExclamation vbFirstFourDays vbFirstFullWeek
syn keyword vbDefine vbFirstJan1 vbFormCode vbFormControlMenu
syn keyword vbDefine vbFormFeed vbFormMDIForm vbFriday vbFromUnicode
syn keyword vbDefine vbGrayText vbGreen vbHidden vbHide vbHighlight
syn keyword vbDefine vbHighlightText vbHiragana vbIgnore vbIMEAlphaDbl
syn keyword vbDefine vbIMEAlphaSng vbIMEDisable vbIMEHiragana
syn keyword vbDefine vbIMEKatakanaDbl vbIMEKatakanaSng vbIMEModeAlpha
syn keyword vbDefine vbIMEModeAlphaFull vbIMEModeDisable
syn keyword vbDefine vbIMEModeHangul vbIMEModeHangulFull
syn keyword vbDefine vbIMEModeHiragana vbIMEModeKatakana
syn keyword vbDefine vbIMEModeKatakanaHalf vbIMEModeNoControl
syn keyword vbDefine vbIMEModeOff vbIMEModeOn vbIMENoOp vbIMEOff
syn keyword vbDefine vbIMEOn vbInactiveBorder vbInactiveCaptionText
syn keyword vbDefine vbInactiveTitleBar vbInfoBackground vbInformation
syn keyword vbDefine vbInfoText vbInteger vbKatakana vbKey0 vbKey1
syn keyword vbDefine vbKey2 vbKey3 vbKey4 vbKey5 vbKey6 vbKey7 vbKey8
syn keyword vbDefine vbKey9 vbKeyA vbKeyAdd vbKeyB vbKeyBack vbKeyC
syn keyword vbDefine vbKeyCancel vbKeyCapital vbKeyClear vbKeyControl
syn keyword vbDefine vbKeyD vbKeyDecimal vbKeyDelete vbKeyDivide
syn keyword vbDefine vbKeyDown vbKeyE vbKeyEnd vbKeyEscape vbKeyExecute
syn keyword vbDefine vbKeyF vbKeyF1 vbKeyF10 vbKeyF11 vbKeyF12 vbKeyF13
syn keyword vbDefine vbKeyF14 vbKeyF15 vbKeyF16 vbKeyF2 vbKeyF3 vbKeyF4
syn keyword vbDefine vbKeyF5 vbKeyF6 vbKeyF7 vbKeyF8 vbKeyF9 vbKeyG
syn keyword vbDefine vbKeyH vbKeyHelp vbKeyHome vbKeyI vbKeyInsert
syn keyword vbDefine vbKeyJ vbKeyK vbKeyL vbKeyLButton vbKeyLeft vbKeyM
syn keyword vbDefine vbKeyMButton vbKeyMenu vbKeyMultiply vbKeyN
syn keyword vbDefine vbKeyNumlock vbKeyNumpad0 vbKeyNumpad1
syn keyword vbDefine vbKeyNumpad2 vbKeyNumpad3 vbKeyNumpad4
syn keyword vbDefine vbKeyNumpad5 vbKeyNumpad6 vbKeyNumpad7
syn keyword vbDefine vbKeyNumpad8 vbKeyNumpad9 vbKeyO vbKeyP
syn keyword vbDefine vbKeyPageDown vbKeyPageUp vbKeyPause vbKeyPrint
syn keyword vbDefine vbKeyQ vbKeyR vbKeyRButton vbKeyReturn vbKeyRight
syn keyword vbDefine vbKeyS vbKeySelect vbKeySeparator vbKeyShift
syn keyword vbDefine vbKeySnapshot vbKeySpace vbKeySubtract vbKeyT
syn keyword vbDefine vbKeyTab vbKeyU vbKeyUp vbKeyV vbKeyW vbKeyX
syn keyword vbDefine vbKeyY vbKeyZ vbLf vbLong vbLowerCase vbMagenta
syn keyword vbDefine vbMaximizedFocus vbMenuBar vbMenuText
syn keyword vbDefine vbMinimizedFocus vbMinimizedNoFocus vbMonday
syn keyword vbDefine vbMsgBox vbMsgBoxHelpButton vbMsgBoxRight
syn keyword vbDefine vbMsgBoxRtlReading vbMsgBoxSetForeground
syn keyword vbDefine vbMsgBoxText vbNarrow vbNewLine vbNo vbNormal
syn keyword vbDefine vbNormalFocus vbNormalNoFocus vbNull vbNullChar
syn keyword vbDefine vbNullString vbObject vbObjectError vbOK
syn keyword vbDefine vbOKCancel vbOKOnly vbProperCase vbQuestion
syn keyword vbDefine vbReadOnly vbRed vbRetry vbRetryCancel vbSaturday
syn keyword vbDefine vbScrollBars vbSingle vbString vbSunday vbSystem
syn keyword vbDefine vbSystemModal vbTab vbTextCompare vbThursday
syn keyword vbDefine vbTitleBarText vbTuesday vbUnicode vbUpperCase
syn keyword vbDefine vbUseSystem vbUseSystemDayOfWeek vbVariant
syn keyword vbDefine vbVerticalTab vbVolume vbWednesday vbWhite vbWide
syn keyword vbDefine vbWindowBackground vbWindowFrame vbWindowText
syn keyword vbDefine vbYellow vbYes vbYesNo vbYesNoCancel
"Numbers
"integer number, or floating point number without a dot.
syn match vbNumber "\<\d\+\>"
"floating point number, with dot
syn match vbNumber "\<\d\+\.\d*\>"
"floating point number, starting with a dot
syn match vbNumber "\.\d\+\>"
"syn match vbNumber "{[[:xdigit:]-]\+}\|&[hH][[:xdigit:]]\+&"
"syn match vbNumber ":[[:xdigit:]]\+"
"syn match vbNumber "[-+]\=\<\d\+\>"
syn match vbFloat "[-+]\=\<\d\+[eE][\-+]\=\d\+"
syn match vbFloat "[-+]\=\<\d\+\.\d*\([eE][\-+]\=\d\+\)\="
syn match vbFloat "[-+]\=\<\.\d\+\([eE][\-+]\=\d\+\)\="
" String and Character contstants
syn region vbString start=+"+ end=+"\|$+
syn region vbComment start="\(^\|\s\)REM\s" end="$" contains=vbTodo
syn region vbComment start="\(^\|\s\)\'" end="$" contains=vbTodo
syn match vbLineNumber "^\d\+\(\s\|$\)"
syn match vbTypeSpecifier "[a-zA-Z0-9][\$%&!#]"ms=s+1
syn match vbTypeSpecifier "#[a-zA-Z0-9]"me=e-1
" Define the default highlighting.
" Only when an item doesn't have highlighting yet
hi def link vbBoolean Boolean
hi def link vbLineNumber Comment
hi def link vbComment Comment
hi def link vbConditional Conditional
hi def link vbConst Constant
hi def link vbDefine Constant
hi def link vbError Error
hi def link vbFunction Identifier
hi def link vbIdentifier Identifier
hi def link vbNumber Number
hi def link vbFloat Float
hi def link vbMethods PreProc
hi def link vbOperator Operator
hi def link vbRepeat Repeat
hi def link vbString String
hi def link vbStatement Statement
hi def link vbKeyword Statement
hi def link vbEvents Special
hi def link vbTodo Todo
hi def link vbTypes Type
hi def link vbTypeSpecifier Type
let b:current_syntax = "vb"
" vim: ts=8
endif