diff options
author | Adam Stankiewicz <sheerun@sher.pl> | 2020-09-06 20:51:38 +0200 |
---|---|---|
committer | Adam Stankiewicz <sheerun@sher.pl> | 2020-09-06 20:51:38 +0200 |
commit | cd2fded0e0abb6b31fceaca128699eca0f300c63 (patch) | |
tree | e796660cd3f9e056566b72e3a104f56f11b51504 | |
parent | 255345bf9525c94479a7ff9b787d2f9848cb7a18 (diff) | |
download | vim-polyglot-cd2fded0e0abb6b31fceaca128699eca0f300c63.tar.gz vim-polyglot-cd2fded0e0abb6b31fceaca128699eca0f300c63.zip |
Add support for Visual Basic and Basic
-rw-r--r-- | README.md | 4 | ||||
-rw-r--r-- | autoload/polyglot.vim | 10 | ||||
-rw-r--r-- | autoload/sleuth.vim | 2 | ||||
-rw-r--r-- | ftdetect/polyglot.vim | 16 | ||||
-rw-r--r-- | ftplugin/vb.vim | 49 | ||||
-rw-r--r-- | heuristics.yaml | 8 | ||||
-rw-r--r-- | indent/vb.vim | 82 | ||||
-rw-r--r-- | packages.yaml | 46 | ||||
-rwxr-xr-x | scripts/build | 33 | ||||
-rw-r--r-- | scripts/test_extensions.vim | 290 | ||||
-rw-r--r-- | scripts/test_filetypes.vim | 2 | ||||
-rw-r--r-- | syntax/basic.vim | 170 | ||||
-rw-r--r-- | syntax/vb.vim | 369 |
13 files changed, 925 insertions, 156 deletions
@@ -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. - 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). - Solid syntax and indentation support (other features skipped). Only the best language packs. - 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) - [ave](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) - [brewfile](https://github.com/bfontaine/Brewfile.vim) - [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) - [vcl](https://github.com/smerrill/vcl-vim-plugin) - [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) - [vue](https://github.com/posva/vim-vue) - [xdc](https://github.com/amal-khailtash/vim-xdc-syntax) diff --git a/autoload/polyglot.vim b/autoload/polyglot.vim index eca7e304..ffb3c43f 100644 --- a/autoload/polyglot.vim +++ b/autoload/polyglot.vim @@ -256,6 +256,16 @@ func! polyglot#DetectLidrFiletype() setf lidris2 | return 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' let &cpo = s:cpo_save unlet s:cpo_save diff --git a/autoload/sleuth.vim b/autoload/sleuth.vim index e70169cb..18344723 100644 --- a/autoload/sleuth.vim +++ b/autoload/sleuth.vim @@ -35,6 +35,7 @@ let s:globs = { \ 'automake': '[Mm]akefile.am,GNUmakefile.am', \ 'ave': '*.ave', \ 'awk': '*.awk', + \ 'basic': '*.basic', \ 'blade': '*.blade,*.blade.php', \ 'brewfile': 'Brewfile', \ 'c': '*.c,*.cats,*.h,*.idc', @@ -200,6 +201,7 @@ let s:globs = { \ 'unison': '*.u,*.uu', \ 'v': '*.v', \ 'vala': '*.vala,*.vapi,*.valadoc', + \ 'vb': '*.bas,*.cls,*.frm,*.frx,*.vba,*.vbs,*.dsm,*.ctl,*.sba', \ 'vbnet': '*.vb,*.vbhtml', \ 'vcl': '*.vcl', \ 'velocity': '*.vm', diff --git a/ftdetect/polyglot.vim b/ftdetect/polyglot.vim index bc79d0a6..a37b76af 100644 --- a/ftdetect/polyglot.vim +++ b/ftdetect/polyglot.vim @@ -1712,6 +1712,22 @@ if !has_key(s:disabled_packages, 'trasys') au! BufNewFile,BufRead *.inp call polyglot#DetectInpFiletype() 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 diff --git a/ftplugin/vb.vim b/ftplugin/vb.vim new file mode 100644 index 00000000..63bf8efd --- /dev/null +++ b/ftplugin/vb.vim @@ -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 diff --git a/heuristics.yaml b/heuristics.yaml index 33c1c690..8c0c1663 100644 --- a/heuristics.yaml +++ b/heuristics.yaml @@ -93,3 +93,11 @@ rules: pattern: '^>\s*--.*[Ii]dris ?1' filetype: lidris - filetype: lidris2 +--- +extensions: [bas] +rules: +- lines: 5 + pattern: 'VB_Name|Begin VB\.(Form|MDIForm|UserControl)' + filetype: vb + ignore_case: true +- filetype: basic diff --git a/indent/vb.vim b/indent/vb.vim new file mode 100644 index 00000000..129c2abd --- /dev/null +++ b/indent/vb.vim @@ -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 diff --git a/packages.yaml b/packages.yaml index 0a8361b5..e167e0f1 100644 --- a/packages.yaml +++ b/packages.yaml @@ -348,14 +348,14 @@ filetypes: extra_extensions: # 17 results: https://github.com/search?q=extension%3Acoffeekup+html&type=Code - coffeekup - ignored_extensions: + ignored_filenames: + # Probably mistake + - '*Cakefile' + ignored_warnings: # Used by C# - csx # Used by Chuck - ck - ignored_filenames: - # Probably mistake - - '*Cakefile' - name: litcoffee linguist: Literate CoffeeScript extra_extensions: @@ -395,7 +395,7 @@ filetypes: extra_extensions: - tsv - tab - ignored_extensions: + ignored_warnings: # This is definitely not csv-only, maybe re-enable when heuristics done - dat --- @@ -815,8 +815,10 @@ filetypes: extra_extensions: - j2 ignored_extensions: - - mustache - njk + ignore_warnings: + # handled by mustache plugin + - mustache --- name: jq remote: vito-c/jq.vim @@ -857,8 +859,8 @@ filetypes: extra_extensions: - jst - ect - ignored_extensions: - # I haven't found reference to them + ignored_warnings: + # I haven't found reference to them on github - djs - hamljs --- @@ -974,6 +976,7 @@ filetypes: ignored_extensions: # Handled by mdx extension - mdx + ignored_warnings: - '{md,mdx,mdown,mkd,mkdn,markdown,mdwn}.{des3,des,bf,bfa,aes,idea,cast,rc2,rc4,rc5,desx}' --- name: mdx @@ -1551,9 +1554,9 @@ remote: lumiliet/vim-twig filetypes: - name: html.twig linguist: Twig - ignored_extensions: + ignored_warnings: + # handled by other extension - xml.twig - ignored_extensions: # already covered by .twig - html.twig - name: xml.twig @@ -1721,3 +1724,26 @@ filetypes: - name: trasys extensions: - 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 diff --git a/scripts/build b/scripts/build index b868ebfc..197b4ea3 100755 --- a/scripts/build +++ b/scripts/build @@ -59,10 +59,15 @@ def load_data() linguist = languages.fetch(filetype["linguist"]) - filetype["extensions"] = (( - (linguist["extensions"] || []).map { |e| e[1..-1] } | + filetype["extensions"] = (linguist["extensions"] || []).map { |e| e[1..-1] } | 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"] = (( (linguist["filenames"] || []) | @@ -394,7 +399,19 @@ def generate_ftdetect(packages, heuristics) expected_filetypes = detect_filetypes('tmp/**/ftdetect/*.vim') native_filetypes = detect_filetypes('tmp/vim/vim/runtime/filetype.vim') 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 name = package.fetch("name") @@ -438,12 +455,16 @@ def generate_ftdetect(packages, heuristics) extensions = filetype["extensions"] filenames = filetype["filenames"] - if expected_filetypes[name] && !filetype["syntax"] - for e in expected_filetypes.fetch(name)[:extensions] - extensions - expand_all(filetype.fetch("ignored_extensions", [])) + expected_extensions = all_filetypes.has_key?(name) ? all_filetypes.fetch(name)[: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}" 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}" end end diff --git a/scripts/test_extensions.vim b/scripts/test_extensions.vim index 9211818d..9cac0b21 100644 --- a/scripts/test_extensions.vim +++ b/scripts/test_extensions.vim @@ -9,145 +9,145 @@ function! TestExtension(filetype, filename, content) exec ":bw!" catch echo g:message - echo 'Filename "' . a:filename . '" does not resolve to extension "' . a:filetype . '"' - echo ' instead received: "' . v:exception . '"' - exec ':cq!' + echo "Filename '" . a:filename . "' does not resolve to extension '" . a:filetype . "'" + echo " instead received: '" . v:exception . "'" + exec ":cq!" endtry endfunction -call TestExtension('sh', 'bash1', "#!/bin/bash") -call TestExtension('sh', 'bash2', "#! /bin/bash") -call TestExtension('sh', 'bash3', "#! /bin/bash2.3") -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', 'bash1', "#!/bin/bash") +call TestExtension("sh", "bash1", "#!/bin/bash") +call TestExtension("sh", "bash2", "#! /bin/bash") +call TestExtension("sh", "bash3", "#! /bin/bash2.3") +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", "bash1", "#!/bin/bash") " Vim help file -call TestExtension('help', $VIMRUNTIME . '/doc/foobar.txt', '') +call TestExtension("help", $VIMRUNTIME . "/doc/foobar.txt", "") " Abaqus or Trasys -call TestExtension('abaqus', 'foobar.inp', "*HEADING\nFoobar") -call TestExtension('trasys', 'foobar.inp', "MSC PATRAN\n* foobar\nHEADER SURFACE DATA\nBSC ENCLO1") +call TestExtension("abaqus", "foobar.inp", "*HEADING\nFoobar") +call TestExtension("trasys", "foobar.inp", "MSC PATRAN\n* foobar\nHEADER SURFACE DATA\nBSC ENCLO1") " 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 -call TestExtension('aap', 'foobar.aap', '') +call TestExtension("aap", "foobar.aap", "") " A2ps printing utility -call TestExtension('a2ps', '/etc/a2ps.cfg', '') -call TestExtension('a2ps', '/usr/local/etc/a2ps.cfg', '') -call TestExtension('a2ps', '/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", "/etc/a2ps.cfg", "") +call TestExtension("a2ps", "/usr/local/etc/a2ps.cfg", "") +call TestExtension("a2ps", "/etc/a2ps/foobar.cfg", "") +call TestExtension("a2ps", "/usr/local/etc/a2ps/foobar.cfg", "") +call TestExtension("a2ps", "/tmp/a2psrc", "") +call TestExtension("a2ps", "/tmp/.a2psrc", "") " ABAB/4 -call TestExtension('abap', 'foobar.abap', '') +call TestExtension("abap", "foobar.abap", "") " ABC music notation -call TestExtension('abc', 'foobar.abc', '') +call TestExtension("abc", "foobar.abc", "") " ABEL -call TestExtension('abel', 'foobar.abl', '') +call TestExtension("abel", "foobar.abl", "") " AceDB -call TestExtension('acedb', 'foobar.wrm', '') +call TestExtension("acedb", "foobar.wrm", "") " Ada (83, 9X, 95) -call TestExtension('ada', 'foobar.adb', '') -call TestExtension('ada', 'foobar.ads', '') -call TestExtension('ada', 'foobar.ada', '') -call TestExtension('ada', 'foobar.gpr', '') +call TestExtension("ada", "foobar.adb", "") +call TestExtension("ada", "foobar.ads", "") +call TestExtension("ada", "foobar.ada", "") +call TestExtension("ada", "foobar.gpr", "") " AHDL -call TestExtension('ahdl', 'foobar.tdf', '') +call TestExtension("ahdl", "foobar.tdf", "") " AIDL -call TestExtension('aidl', 'foobar.aidl', '') +call TestExtension("aidl", "foobar.aidl", "") " AMPL -call TestExtension('ampl', 'foobar.run', '') +call TestExtension("ampl", "foobar.run", "") " Ant -call TestExtension('ant', 'build.xml', '') +call TestExtension("ant", "build.xml", "") " Arduino -call TestExtension('arduino', 'foobar.ino', '') -call TestExtension('arduino', 'foobar.pde', '') +call TestExtension("arduino", "foobar.ino", "") +call TestExtension("arduino", "foobar.pde", "") " Apache config file -call TestExtension('apache', '.htaccess', '') -call TestExtension('apache', '/etc/httpd/foobar.conf', '') -call TestExtension('apache', '/etc/apache2/sites-foobar/foobar.com', '') -call TestExtension('apache', '/usr/local/etc/httpd/foobar.conf', '') -call TestExtension('apache', '/usr/local/etc/apache2/sites-foobar/foobar.com', '') +call TestExtension("apache", ".htaccess", "") +call TestExtension("apache", "/etc/httpd/foobar.conf", "") +call TestExtension("apache", "/etc/apache2/sites-foobar/foobar.com", "") +call TestExtension("apache", "/usr/local/etc/httpd/foobar.conf", "") +call TestExtension("apache", "/usr/local/etc/apache2/sites-foobar/foobar.com", "") " XA65 MOS6510 cross assembler -call TestExtension('a65', 'foobar.a65', '') +call TestExtension("a65", "foobar.a65", "") " Applescript -call TestExtension('applescript', 'foobar.scpt', '') +call TestExtension("applescript", "foobar.scpt", "") " Applix ELF -call TestExtension('elf', 'foobar.am', '') -call TestExtension('automake', 'Makefile.am', '') -call TestExtension('automake', 'makefile.am', '') +call TestExtension("elf", "foobar.am", "") +call TestExtension("automake", "Makefile.am", "") +call TestExtension("automake", "makefile.am", "") " ALSA configuration -call TestExtension('alsaconf', '.asoundrc', '') -call TestExtension('alsaconf', '/usr/share/alsa/alsa.conf', '') -call TestExtension('alsaconf', '/media/foo/usr/share/alsa/alsa.conf', '') -call TestExtension('alsaconf', '/etc/asound.conf', '') -call TestExtension('alsaconf', '/media/foo/etc/asound.conf', '') +call TestExtension("alsaconf", ".asoundrc", "") +call TestExtension("alsaconf", "/usr/share/alsa/alsa.conf", "") +call TestExtension("alsaconf", "/media/foo/usr/share/alsa/alsa.conf", "") +call TestExtension("alsaconf", "/etc/asound.conf", "") +call TestExtension("alsaconf", "/media/foo/etc/asound.conf", "") " Arc Macro Language -call TestExtension('aml', 'foobar.aml', '') +call TestExtension("aml", "foobar.aml", "") " APT config file -call TestExtension('aptconf', 'apt.conf', '') -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.conf', '') -call TestExtension('', '/etc/apt/apt.conf.d/.gsdf', '') +call TestExtension("aptconf", "apt.conf", "") +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.conf", "") +call TestExtension("", "/etc/apt/apt.conf.d/.gsdf", "") " Arch Inventory file -call TestExtension('arch', '.arch-inventory', '') -call TestExtension('arch', '=tagging-method', '') +call TestExtension("arch", ".arch-inventory", "") +call TestExtension("arch", "=tagging-method", "") " ART*Enterprise (formerly ART-IM) -call TestExtension('art', 'foobar.art', '') +call TestExtension("art", "foobar.art", "") " AsciiDoc -call TestExtension('asciidoc', 'foobar.asciidoc', '') -call TestExtension('asciidoc', 'foobar.adoc', '') +call TestExtension("asciidoc", "foobar.asciidoc", "") +call TestExtension("asciidoc", "foobar.adoc", "") " ASN.1 -call TestExtension('asn', 'foobar.asn', '') -call TestExtension('asn', 'foobar.asn1', '') +call TestExtension("asn", "foobar.asn", "") +call TestExtension("asn", "foobar.asn1", "") " Active Server Pages (with Visual Basic Script) -call TestExtension('aspvbs', 'foobar.asa', '') -let g:filetype_asa = 'fizfuz' -call TestExtension('fizfuz', 'foobar.asa', '') +call TestExtension("aspvbs", "foobar.asa", "") +let g:filetype_asa = "fizfuz" +call TestExtension("fizfuz", "foobar.asa", "") " Active Server Pages (with Perl or Visual Basic Script) -call TestExtension('aspvbs', 'vbs.asp', "") -call TestExtension('aspperl', 'perl.asp', "<Job ID=\"DropFiles\">\n<script language=\"PerlScript\">\n</script>\n</Job>") -let g:filetype_asp = 'fizfuz' -call TestExtension('fizfuz', 'fizfuz.asp', '') +call TestExtension("aspvbs", "vbs.asp", "") +call TestExtension("aspperl", "perl.asp", "<Job ID=\"DropFiles\">\n<script language=\"PerlScript\">\n</script>\n</Job>") +let g:filetype_asp = "fizfuz" +call TestExtension("fizfuz", "fizfuz.asp", "") " Grub (must be before catch *.lst) -call TestExtension('grub', '/boot/grub/menu.lst', '') -call TestExtension('grub', '/media/foobar/boot/grub/menu.lst', '') -call TestExtension('grub', '/boot/grub/grub.conf', '') -call TestExtension('grub', '/media/foobar/boot/grub/grub.conf', '') -call TestExtension('grub', '/etc/grub.conf', '') -call TestExtension('grub', '/media/foobar/etc/grub.conf', '') +call TestExtension("grub", "/boot/grub/menu.lst", "") +call TestExtension("grub", "/media/foobar/boot/grub/menu.lst", "") +call TestExtension("grub", "/boot/grub/grub.conf", "") +call TestExtension("grub", "/media/foobar/boot/grub/grub.conf", "") +call TestExtension("grub", "/etc/grub.conf", "") +call TestExtension("grub", "/media/foobar/etc/grub.conf", "") " Assembly (all kinds) " *.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() " Macro (VAX) -call TestExtension('vmasm', 'foobar.mar', '') +call TestExtension("vmasm", "foobar.mar", "") " Atlas -call TestExtension('atlas', 'foobar.atl', '') -call TestExtension('atlas', 'foobar.as', '') +call TestExtension("atlas", "foobar.atl", "") +call TestExtension("atlas", "foobar.as", "") " Autoit v3 -call TestExtension('autoit', 'foobar.au3', '') +call TestExtension("autoit", "foobar.au3", "") " Autohotkey -call TestExtension('autohotkey', 'foobar.ahk', '') +call TestExtension("autohotkey", "foobar.ahk", "") " Automake -call TestExtension('automake', 'Makefile.am', '') -call TestExtension('automake', 'makefile.am', '') -call TestExtension('automake', 'GNUmakefile.am', '') +call TestExtension("automake", "Makefile.am", "") +call TestExtension("automake", "makefile.am", "") +call TestExtension("automake", "GNUmakefile.am", "") " Autotest .at files are actually m4 -call TestExtension('m4', 'foobar.at', '') +call TestExtension("m4", "foobar.at", "") " Avenue -call TestExtension('ave', 'foobar.ave', '') +call TestExtension("ave", "foobar.ave", "") " Awk -call TestExtension('awk', 'foobar.awk', '') +call TestExtension("awk", "foobar.awk", "") " vim-polyglot only -call TestExtension('blade', 'test.blade.php', '') -call TestExtension('yaml.ansible', 'playbook.yml', '') -call TestExtension('yaml.ansible', 'host_vars/foobar', '') -call TestExtension('yaml.ansible', 'handlers.foobar.yaml', '') -call TestExtension('yaml.ansible', 'requirements.yaml', '') -call TestExtension('ps1xml', 'foobar.ps1xml', '') -call TestExtension('terraform', 'terraform.tf', '') - -call TestExtension('idris2', 'foobar.idr', '') -call TestExtension('idris', 'foobar.idr', "pkgs : List String\npkgs = [\"NCurses\", \"Readline\"]") -let g:filetype_idr = 'fizfuz' -call TestExtension('fizfuz', 'fizfuz.idr', '') +call TestExtension("blade", "test.blade.php", "") +call TestExtension("yaml.ansible", "playbook.yml", "") +call TestExtension("yaml.ansible", "host_vars/foobar", "") +call TestExtension("yaml.ansible", "handlers.foobar.yaml", "") +call TestExtension("yaml.ansible", "requirements.yaml", "") +call TestExtension("ps1xml", "foobar.ps1xml", "") +call TestExtension("terraform", "terraform.tf", "") + +call TestExtension("idris2", "foobar.idr", "") +call TestExtension("idris", "foobar.idr", "pkgs : List String\npkgs = [\"NCurses\", \"Readline\"]") +let g:filetype_idr = "fizfuz" +call TestExtension("fizfuz", "fizfuz.idr", "") " .m extension -call TestExtension('octave', 'matlab.m', '') -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('mma', 'mathematica.m', "newcase[ \"00003\" ];\n (* Hello world *)") -call TestExtension('murphi', 'murphi.m', "type\n square: 1 .. 9") -call TestExtension('murphi', 'murphi.m', "something\n--foobar") -call TestExtension('octave', 'percentcomment.m', "hello world\n%foobar") -call TestExtension('objc', 'comment.m', "\n/* Hello world */") -let g:filetype_m = 'fizfuz' -call TestExtension('fizfuz', 'fizfuz.m', '') +call TestExtension("octave", "matlab.m", "") +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("mma", "mathematica.m", "newcase[ \"00003\" ];\n (* Hello world *)") +call TestExtension("murphi", "murphi.m", "type\n square: 1 .. 9") +call TestExtension("murphi", "murphi.m", "something\n--foobar") +call TestExtension("octave", "percentcomment.m", "hello world\n%foobar") +call TestExtension("objc", "comment.m", "\n/* Hello world */") +let g:filetype_m = "fizfuz" +call TestExtension("fizfuz", "fizfuz.m", "") " .fs extension -call TestExtension('forth', 'empty.fs', '') -call TestExtension('fsharp', 'fsharp.fs', "let myInt = 5") -call TestExtension('glsl', 'glsl.fs', "//#version 120\nvoid main() {}") -let g:filetype_fs = 'fizfuz' -call TestExtension('fizfuz', 'fizfuz.fs', '') +call TestExtension("forth", "empty.fs", "") +call TestExtension("fsharp", "fsharp.fs", "let myInt = 5") +call TestExtension("glsl", "glsl.fs", "//#version 120\nvoid main() {}") +let g:filetype_fs = "fizfuz" +call TestExtension("fizfuz", "fizfuz.fs", "") " .re extension -call TestExtension('reason', 'empty.re', '') -call TestExtension('cpp', 'cpp.re', '#include "config.h"') -call TestExtension('cpp', 'cpp2.re', '#ifdef HAVE_CONFIG_H') -call TestExtension('cpp', 'cpp3.re', '#define YYCTYPE unsigned char') -call TestExtension('reason', 'react.re', 'ReasonReact.Router.push("");') +call TestExtension("reason", "empty.re", "") +call TestExtension("cpp", "cpp.re", "#include \"config.h\"") +call TestExtension("cpp", "cpp2.re", "#ifdef HAVE_CONFIG_H") +call TestExtension("cpp", "cpp3.re", "#define YYCTYPE unsigned char") +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 -call TestExtension('idris', 'lowercase.idr', '--idris1') -call TestExtension('idris', 'uppercase.idr', '--Idris1') -call TestExtension('idris', 'start-space-l.idr', '-- idris1') -call TestExtension('idris', 'start-space-u.idr', '-- Idris1') -call TestExtension('idris', 'two-spaces-l.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', 'use-type-prov.idr', '%language TypeProviders') -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('idris2', 'lowercase.idr', '--idris2') -call TestExtension('idris2', 'uppercase.idr', '--Idris2') -call TestExtension('idris2', 'start-space-l.idr', '-- idris2') -call TestExtension('idris2', 'start-space-u.idr', '-- Idris2') -call TestExtension('idris2', 'two-spaces-l.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', 'use-post-proj.idr', '%language PostfixProjections') +call TestExtension("idris", "lowercase.idr", "--idris1") +call TestExtension("idris", "uppercase.idr", "--Idris1") +call TestExtension("idris", "start-space-l.idr", "-- idris1") +call TestExtension("idris", "start-space-u.idr", "-- Idris1") +call TestExtension("idris", "two-spaces-l.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", "use-type-prov.idr", "%language TypeProviders") +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("idris2", "lowercase.idr", "--idris2") +call TestExtension("idris2", "uppercase.idr", "--Idris2") +call TestExtension("idris2", "start-space-l.idr", "-- idris2") +call TestExtension("idris2", "start-space-u.idr", "-- Idris2") +call TestExtension("idris2", "two-spaces-l.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", "use-post-proj.idr", "%language PostfixProjections") " 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('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("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") diff --git a/scripts/test_filetypes.vim b/scripts/test_filetypes.vim index 0f870d5a..e157889d 100644 --- a/scripts/test_filetypes.vim +++ b/scripts/test_filetypes.vim @@ -228,3 +228,5 @@ call TestFiletype('zephir') call TestFiletype('zir') call TestFiletype('zig') call TestFiletype('trasys') +call TestFiletype('basic') +call TestFiletype('vb') diff --git a/syntax/basic.vim b/syntax/basic.vim new file mode 100644 index 00000000..f2aa1bc4 --- /dev/null +++ b/syntax/basic.vim @@ -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 diff --git a/syntax/vb.vim b/syntax/vb.vim new file mode 100644 index 00000000..04e171ca --- /dev/null +++ b/syntax/vb.vim @@ -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 |