mirror of
				https://github.com/vim/vim.git
				synced 2025-10-30 09:47:20 -04:00 
			
		
		
		
	Update runtime files
This commit is contained in:
		
							
								
								
									
										3
									
								
								.github/CODEOWNERS
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										3
									
								
								.github/CODEOWNERS
									
									
									
									
										vendored
									
									
								
							| @@ -111,6 +111,7 @@ runtime/ftplugin/dosbatch.vim		@mrdubya | ||||
| runtime/ftplugin/eiffel.vim		@dkearns | ||||
| runtime/ftplugin/erlang.vim		@hcs42 | ||||
| runtime/ftplugin/eruby.vim		@tpope @dkearns | ||||
| runtime/ftplugin/fetchmail.vim		@dkearns | ||||
| runtime/ftplugin/fpcmake.vim		@dkearns | ||||
| runtime/ftplugin/freebasic.vim		@dkearns | ||||
| runtime/ftplugin/fstab.vim		@rid9 | ||||
| @@ -298,8 +299,10 @@ runtime/syntax/erlang.vim		@hcs42 | ||||
| runtime/syntax/eruby.vim		@tpope @dkearns | ||||
| runtime/syntax/exports.vim		@cecamp | ||||
| runtime/syntax/falcon.vim		@steveno | ||||
| runtime/syntax/fetchmail.vim		@dkearns | ||||
| runtime/syntax/forth.vim		@jkotlinski | ||||
| runtime/syntax/fpcmake.vim		@dkearns | ||||
| runtime/syntax/freebasic.vim		@dkearns | ||||
| runtime/syntax/fstab.vim		@rid9 | ||||
| runtime/syntax/git.vim			@tpope | ||||
| runtime/syntax/gitcommit.vim		@tpope | ||||
|   | ||||
							
								
								
									
										2
									
								
								Filelist
									
									
									
									
									
								
							
							
						
						
									
										2
									
								
								Filelist
									
									
									
									
									
								
							| @@ -15,7 +15,6 @@ SRC_ALL =	\ | ||||
| 		.gitignore \ | ||||
| 		.hgignore \ | ||||
| 		.lgtm.yml \ | ||||
| 		.travis.yml \ | ||||
| 		.appveyor.yml \ | ||||
| 		.codecov.yml \ | ||||
| 		ci/appveyor.bat \ | ||||
| @@ -1017,6 +1016,7 @@ LANG_GEN = \ | ||||
| 		runtime/spell/??/*.diff \ | ||||
| 		runtime/spell/??/main.aap \ | ||||
| 		runtime/spell/sr/README_sr.txt \ | ||||
| 		runtime/spell/sr/convert.vim \ | ||||
| 		runtime/spell/tet/*.diff \ | ||||
| 		runtime/spell/tet/main.aap \ | ||||
| 		runtime/spell/check/main.aap \ | ||||
|   | ||||
| @@ -1,6 +1,6 @@ | ||||
| [](https://www.vim.org) | ||||
|  | ||||
| [](https://github.com/vim/vim/actions?query=workflow%3A%22GitHub+CI%22) [](https://travis-ci.com/github/vim/vim) [](https://ci.appveyor.com/project/chrisbra/vim) [](https://cirrus-ci.com/github/vim/vim) [](https://codecov.io/gh/vim/vim?branch=master) [](https://scan.coverity.com/projects/vim) [](https://lgtm.com/projects/g/vim/vim/context:cpp) [](https://buildd.debian.org/vim) [](https://repology.org/metapackage/vim) [](https://fossies.org/linux/test/vim-master.tar.gz/codespell.html) | ||||
| [](https://github.com/vim/vim/actions?query=workflow%3A%22GitHub+CI%22) [](https://ci.appveyor.com/project/chrisbra/vim) [](https://cirrus-ci.com/github/vim/vim) [](https://codecov.io/gh/vim/vim?branch=master) [](https://scan.coverity.com/projects/vim) [](https://lgtm.com/projects/g/vim/vim/context:cpp) [](https://buildd.debian.org/vim) [](https://repology.org/metapackage/vim) [](https://fossies.org/linux/test/vim-master.tar.gz/codespell.html) | ||||
|  | ||||
| <sub>For translations of this README see the end.</sub> | ||||
|  | ||||
|   | ||||
| @@ -1,7 +1,7 @@ | ||||
| " Vim filetype plugin file | ||||
| " Language:	FreeBASIC | ||||
| " Maintainer:	Doug Kearns <dougkearns@gmail.com> | ||||
| " Last Change:	2021 Mar 16 | ||||
| " Last Change:	2022 June 24 | ||||
|  | ||||
| " Dialects can be one of fb, qb, fblite, or deprecated | ||||
| " Precedence is forcelang > #lang > lang | ||||
| @@ -18,17 +18,16 @@ function! freebasic#GetDialect() abort | ||||
|  | ||||
|   " override with #lang directive or metacommand | ||||
|  | ||||
|   let skip = "has('syntax_items') && synIDattr(synID(line('.'), col('.'), 1), 'name') =~ 'Comment$'" | ||||
|   let pat = '\c^\s*\%(#\s*lang\s\+\|''\s*$lang\s*:\s*\)"\([^"]*\)"' | ||||
|  | ||||
|   let save_cursor = getcurpos() | ||||
|   call cursor(1, 1) | ||||
|   let lnum = search(pat, 'n', '', '', skip) | ||||
|   let lnum = search(pat, 'cn') | ||||
|   call setpos('.', save_cursor) | ||||
|  | ||||
|   if lnum | ||||
|     let word = matchlist(getline(lnum), pat)[1] | ||||
|     if word =~? '\%(fb\|deprecated\|fblite\|qb\)' | ||||
|     if word =~? '\<\%(fb\|deprecated\|fblite\|qb\)\>' | ||||
|       let dialect = word | ||||
|     else | ||||
|       echomsg "freebasic#GetDialect: Invalid lang, found '" .. word .. "' at line " .. lnum .. " " .. getline(lnum) | ||||
|   | ||||
| @@ -556,12 +556,30 @@ For further discussion of fortran_have_tabs and the method used for the | ||||
| detection of source format see |ft-fortran-syntax|. | ||||
|  | ||||
|  | ||||
| FREEBASIC						*ft-freebasic-plugin* | ||||
|  | ||||
| This plugin aims to treat the four FreeBASIC dialects, "fb", "qb", "fblite" | ||||
| and "deprecated", as distinct languages. | ||||
|  | ||||
| The dialect will be set to the first name found in g:freebasic_forcelang, any | ||||
| #lang directive or $lang metacommand in the file being edited, or finally | ||||
| g:freebasic_lang.  These global variables conceptually map to the fbc options | ||||
| -forcelang and -lang.  If no dialect is explicitly specified "fb" will be | ||||
| used. | ||||
|  | ||||
| For example, to set the dialect to a default of "fblite" but still allow for | ||||
| any #lang directive overrides, use the following command: > | ||||
|  | ||||
|      let g:freebasic_lang = "fblite" | ||||
|  | ||||
|  | ||||
| GIT COMMIT                                              *ft-gitcommit-plugin* | ||||
|  | ||||
| One command, :DiffGitCached, is provided to show a diff of the current commit | ||||
| in the preview window.  It is equivalent to calling "git diff --cached" plus | ||||
| any arguments given to the command. | ||||
|  | ||||
|  | ||||
| GPROF							*ft-gprof-plugin* | ||||
|  | ||||
| The gprof filetype plugin defines a mapping <C-]> to jump from a function | ||||
| @@ -571,6 +589,7 @@ to the details of that function in the call graph. | ||||
| The mapping can be disabled with: > | ||||
| 	let g:no_gprof_maps = 1 | ||||
|  | ||||
|  | ||||
| MAIL							*ft-mail-plugin* | ||||
|  | ||||
| Options: | ||||
|   | ||||
| @@ -568,6 +568,9 @@ pattern is used. | ||||
| The |:Lfilter| command does the same as |:Cfilter| but operates on the current | ||||
| location list. | ||||
|  | ||||
| The current quickfix/location list is not modified by these commands, so you | ||||
| can go back to the unfiltered list using the |:colder|/|:lolder| command. | ||||
|  | ||||
| ============================================================================= | ||||
| 2. The error window					*quickfix-window* | ||||
|  | ||||
|   | ||||
| @@ -1694,6 +1694,21 @@ because Fortran90 has no reserved words. | ||||
| For further information related to fortran, see |ft-fortran-indent| and | ||||
| |ft-fortran-plugin|. | ||||
|  | ||||
| FREEBASIC				*freebasic.vim* *ft-freebasic-syntax* | ||||
|  | ||||
| FreeBASIC files will be highlighted differently for each of the four available | ||||
| dialects, "fb", "qb", "fblite" and "deprecated".  See |ft-freebasic-plugin| | ||||
| for how to select the correct dialect. | ||||
|  | ||||
| Highlighting is further configurable via the following variables. | ||||
|  | ||||
| Variable			Highlight ~ | ||||
| *freebasic_no_comment_fold*	disable multiline comment folding | ||||
| *freebasic_operators*		non-alpha operators | ||||
| *freebasic_space_errors*	trailing white space and spaces before a <Tab> | ||||
| *freebasic_type_suffixes*	QuickBASIC style type suffixes | ||||
|  | ||||
|  | ||||
|  | ||||
| FVWM CONFIGURATION FILES			*fvwm.vim* *ft-fvwm-syntax* | ||||
|  | ||||
|   | ||||
| @@ -988,6 +988,7 @@ $quote	eval.txt	/*$quote* | ||||
| 't_Co'	term.txt	/*'t_Co'* | ||||
| 't_Cs'	term.txt	/*'t_Cs'* | ||||
| 't_DL'	term.txt	/*'t_DL'* | ||||
| 't_Ds'	term.txt	/*'t_Ds'* | ||||
| 't_EC'	term.txt	/*'t_EC'* | ||||
| 't_EI'	term.txt	/*'t_EI'* | ||||
| 't_F1'	term.txt	/*'t_F1'* | ||||
| @@ -1044,6 +1045,7 @@ $quote	eval.txt	/*$quote* | ||||
| 't_TI'	term.txt	/*'t_TI'* | ||||
| 't_Te'	term.txt	/*'t_Te'* | ||||
| 't_Ts'	term.txt	/*'t_Ts'* | ||||
| 't_Us'	term.txt	/*'t_Us'* | ||||
| 't_VS'	term.txt	/*'t_VS'* | ||||
| 't_WP'	term.txt	/*'t_WP'* | ||||
| 't_WS'	term.txt	/*'t_WS'* | ||||
| @@ -1059,6 +1061,7 @@ $quote	eval.txt	/*$quote* | ||||
| 't_da'	term.txt	/*'t_da'* | ||||
| 't_db'	term.txt	/*'t_db'* | ||||
| 't_dl'	term.txt	/*'t_dl'* | ||||
| 't_ds'	term.txt	/*'t_ds'* | ||||
| 't_fd'	term.txt	/*'t_fd'* | ||||
| 't_fe'	term.txt	/*'t_fe'* | ||||
| 't_fs'	term.txt	/*'t_fs'* | ||||
| @@ -6875,6 +6878,11 @@ format-formatexpr	change.txt	/*format-formatexpr* | ||||
| formatting	change.txt	/*formatting* | ||||
| forth.vim	syntax.txt	/*forth.vim* | ||||
| fortran.vim	syntax.txt	/*fortran.vim* | ||||
| freebasic.vim	syntax.txt	/*freebasic.vim* | ||||
| freebasic_no_comment_fold	syntax.txt	/*freebasic_no_comment_fold* | ||||
| freebasic_operators	syntax.txt	/*freebasic_operators* | ||||
| freebasic_space_errors	syntax.txt	/*freebasic_space_errors* | ||||
| freebasic_type_suffixes	syntax.txt	/*freebasic_type_suffixes* | ||||
| friendship	intro.txt	/*friendship* | ||||
| frombook	usr_01.txt	/*frombook* | ||||
| ft-abel-syntax	syntax.txt	/*ft-abel-syntax* | ||||
| @@ -6931,6 +6939,8 @@ ft-forth-syntax	syntax.txt	/*ft-forth-syntax* | ||||
| ft-fortran-indent	indent.txt	/*ft-fortran-indent* | ||||
| ft-fortran-plugin	filetype.txt	/*ft-fortran-plugin* | ||||
| ft-fortran-syntax	syntax.txt	/*ft-fortran-syntax* | ||||
| ft-freebasic-plugin	filetype.txt	/*ft-freebasic-plugin* | ||||
| ft-freebasic-syntax	syntax.txt	/*ft-freebasic-syntax* | ||||
| ft-fvwm-syntax	syntax.txt	/*ft-fvwm-syntax* | ||||
| ft-gitcommit-plugin	filetype.txt	/*ft-gitcommit-plugin* | ||||
| ft-gprof-plugin	filetype.txt	/*ft-gprof-plugin* | ||||
| @@ -9726,6 +9736,7 @@ t_Ce	term.txt	/*t_Ce* | ||||
| t_Co	term.txt	/*t_Co* | ||||
| t_Cs	term.txt	/*t_Cs* | ||||
| t_DL	term.txt	/*t_DL* | ||||
| t_Ds	term.txt	/*t_Ds* | ||||
| t_EC	term.txt	/*t_EC* | ||||
| t_EI	term.txt	/*t_EI* | ||||
| t_F1	term.txt	/*t_F1* | ||||
| @@ -9782,6 +9793,7 @@ t_TE	term.txt	/*t_TE* | ||||
| t_TI	term.txt	/*t_TI* | ||||
| t_Te	term.txt	/*t_Te* | ||||
| t_Ts	term.txt	/*t_Ts* | ||||
| t_Us	term.txt	/*t_Us* | ||||
| t_VS	term.txt	/*t_VS* | ||||
| t_WP	term.txt	/*t_WP* | ||||
| t_WS	term.txt	/*t_WS* | ||||
| @@ -9808,6 +9820,7 @@ t_da	term.txt	/*t_da* | ||||
| t_db	term.txt	/*t_db* | ||||
| t_dict-variable	eval.txt	/*t_dict-variable* | ||||
| t_dl	term.txt	/*t_dl* | ||||
| t_ds	term.txt	/*t_ds* | ||||
| t_ed	version4.txt	/*t_ed* | ||||
| t_el	version4.txt	/*t_el* | ||||
| t_f1	version4.txt	/*t_f1* | ||||
| @@ -10204,7 +10217,11 @@ u	undo.txt	/*u* | ||||
| uganda	uganda.txt	/*uganda* | ||||
| uganda.txt	uganda.txt	/*uganda.txt* | ||||
| undercurl	syntax.txt	/*undercurl* | ||||
| underdashed	syntax.txt	/*underdashed* | ||||
| underdotted	syntax.txt	/*underdotted* | ||||
| underdouble	syntax.txt	/*underdouble* | ||||
| underline	syntax.txt	/*underline* | ||||
| underline-codes	syntax.txt	/*underline-codes* | ||||
| undo	undo.txt	/*undo* | ||||
| undo-blocks	undo.txt	/*undo-blocks* | ||||
| undo-branches	undo.txt	/*undo-branches* | ||||
|   | ||||
| @@ -38,9 +38,6 @@ browser use: https://github.com/vim/vim/issues/1234 | ||||
| 							*known-bugs* | ||||
| -------------------- Known bugs and current work ----------------------- | ||||
|  | ||||
| Prepare for the Vim 9.0 release: | ||||
| - Update version number in help | ||||
|  | ||||
| Further Vim9 improvements, possibly after launch: | ||||
| - Use Vim9 for more runtime files. | ||||
| - Check performance with callgrind and kcachegrind. | ||||
| @@ -201,19 +198,11 @@ Terminal emulator window: | ||||
|   conversions. | ||||
|  | ||||
| Patches considered for including: | ||||
| - make functions static if possible, add a few tests. #10612 | ||||
| - use ngettext() in a few more places #10606 | ||||
| - move f_hasmapto() to map.c  #10611 | ||||
| - Add "-n" option to xxd. #10599  needs a test | ||||
| - allow for nesting of timeout, sketch in #10595 | ||||
| - Add "-n" option to xxd. #10599 | ||||
| - Add support for "underdouble", "underdot" and "underdash". #9553 | ||||
| - Patch to implement the vimtutor with a plugin: #6414 | ||||
|   Was originally written by Felipe Morales. | ||||
| - Patch to make fillchars global-local. (#5206) | ||||
| - Version of getchar() that does not move the cursor - #10603 | ||||
|   Use a separate argument for the new flag. | ||||
| - Improved VB filetype detection. (Doug Kearns, June 26) | ||||
| - Improved FreeBasic runtime files (and a second one). (Doug Kearns, June 26) | ||||
|  | ||||
| Autoconf: must use autoconf 2.69, later version generates lots of warnings | ||||
| - try using autoconf 2.71 and fix all "obsolete" warnings | ||||
| @@ -236,6 +225,8 @@ pass it on with modifications. | ||||
|  | ||||
| Can "CSI nr X" be used instead of outputting spaces?  Is it faster?  #8002 | ||||
|  | ||||
| Typed keys invisible after calling interrupt() from a timer. #10631 | ||||
|  | ||||
| With a window height of 6 and 'scrolloff' set to 3, using "j" does not scroll | ||||
| evenly. (#10545)  Need to handle this in scroll_cursor_bot(). | ||||
|  | ||||
| @@ -254,6 +245,9 @@ The line number can be obtained from win->w_lines[]. | ||||
|  | ||||
| MS-Windows: did path modifier :p:8 stop working?  #8600 | ||||
|  | ||||
| Version of getchar() that does not move the cursor - #10603 Use a separate | ||||
| argument for the new flag. | ||||
|  | ||||
| test_arglist func Test_all_not_allowed_from_cmdwin() hangs on MS-Windows. | ||||
|  | ||||
| Information for a specific terminal (e.g. gnome, tmux, konsole, alacritty) is | ||||
| @@ -295,6 +289,8 @@ inconsistent with the documentation. | ||||
|  | ||||
| globpath() does not use 'wildignorecase' at all? (related to #8350) | ||||
|  | ||||
| mksession uses :buffer instead of :edit in one place but not another. #10629 | ||||
|  | ||||
| Add 'termguiattr' option, use "gui=" attributes in the terminal?  Would work | ||||
| with 'termguicolors'. #1740 | ||||
|  | ||||
| @@ -4423,6 +4419,8 @@ GUI: | ||||
|  | ||||
|  | ||||
| Autocommands: | ||||
| 9   Add WinNewPre - before creating a new window. #10635 | ||||
| 9   When triggering WinNew provide the window ID somehow.  #10633 | ||||
| 9   Rework the code from FEAT_OSFILETYPE for autocmd-osfiletypes to use | ||||
|     'filetype'.  Only for when the current buffer is known. | ||||
| -   Put autocommand event names in a hashtable for faster lookup? | ||||
|   | ||||
| @@ -46,7 +46,7 @@ OPTIONS | ||||
|               long line of output. | ||||
|  | ||||
|        -C | -capitalize | ||||
|               Capitalize variable names in C include file  style,  when  using | ||||
|               Capitalize  variable  names  in C include file style, when using | ||||
|               -i. | ||||
|  | ||||
|        -E | -EBCDIC | ||||
| @@ -57,28 +57,32 @@ OPTIONS | ||||
|        -e     Switch to little-endian hexdump.  This option treats byte groups | ||||
|               as words in little-endian byte order.  The default grouping of 4 | ||||
|               bytes may be changed using -g.  This option only applies to hex‐ | ||||
|               dump, leaving the ASCII (or  EBCDIC)  representation  unchanged. | ||||
|               dump,  leaving  the  ASCII (or EBCDIC) representation unchanged. | ||||
|               The command line switches -r, -p, -i do not work with this mode. | ||||
|  | ||||
|        -g bytes | -groupsize bytes | ||||
|               Separate  the  output of every <bytes> bytes (two hex characters | ||||
|               Separate the output of every <bytes> bytes (two  hex  characters | ||||
|               or eight bit-digits each) by a whitespace.  Specify -g 0 to sup‐ | ||||
|               press grouping.  <Bytes> defaults to 2 in normal mode, 4 in lit‐ | ||||
|               tle-endian mode and 1 in bits mode.  Grouping does not apply  to | ||||
|               tle-endian  mode and 1 in bits mode.  Grouping does not apply to | ||||
|               postscript or include style. | ||||
|  | ||||
|        -h | -help | ||||
|               Print  a summary of available commands and exit.  No hex dumping | ||||
|               Print a summary of available commands and exit.  No hex  dumping | ||||
|               is performed. | ||||
|  | ||||
|        -i | -include | ||||
|               Output in C include file style. A complete static array  defini‐ | ||||
|               tion  is  written (named after the input file), unless xxd reads | ||||
|               Output  in C include file style. A complete static array defini‐ | ||||
|               tion is written (named after the input file), unless  xxd  reads | ||||
|               from stdin. | ||||
|  | ||||
|        -l len | -len len | ||||
|               Stop after writing <len> octets. | ||||
|  | ||||
|        -n name  |  -name name | ||||
|               Override  the variable name output when -i is used. The array is | ||||
|               named name and the length is named name_len. | ||||
|  | ||||
|        -o offset | ||||
|               Add <offset> to the displayed file position. | ||||
|  | ||||
| @@ -91,8 +95,8 @@ OPTIONS | ||||
|               not writing to stdout, xxd writes into its output  file  without | ||||
|               truncating it. Use the combination -r -p to read plain hexadeci‐ | ||||
|               mal dumps without line number information and without a particu‐ | ||||
|               lar  column  layout.  Additional  Whitespace and line-breaks are | ||||
|               allowed anywhere. | ||||
|               lar column layout. Additional Whitespace and line-breaks are al‐ | ||||
|               lowed anywhere. | ||||
|  | ||||
|        -seek offset | ||||
|               When used after -r: revert with <offset> added to file positions | ||||
| @@ -209,8 +213,8 @@ EXAMPLES | ||||
|        * | ||||
|        000fffc: 0000 0000 40                   ....A | ||||
|  | ||||
|        Create  a  1  byte  file containing a single 'A' character.  The number | ||||
|        after '-r -s' adds to the linenumbers found in the file; in effect, the | ||||
|        Create a 1 byte file containing a single 'A' character.  The number af‐ | ||||
|        ter '-r -s' adds to the linenumbers found in the file; in  effect,  the | ||||
|        leading bytes are suppressed. | ||||
|        % echo "010000: 41" | xxd -r -s -0x10000 > file | ||||
|  | ||||
|   | ||||
| @@ -1,7 +1,7 @@ | ||||
| " Vim filetype plugin file | ||||
| " Language:	BASIC (QuickBASIC 4.5) | ||||
| " Maintainer:	Doug Kearns <dougkearns@gmail.com> | ||||
| " Last Change:	2021 Mar 16 | ||||
| " Last Change:	2022 Jun 22 | ||||
|  | ||||
| if exists("b:did_ftplugin") | ||||
|   finish | ||||
| @@ -15,6 +15,8 @@ setlocal comments=:REM\ ,:Rem\ ,:rem\ ,:' | ||||
| setlocal commentstring='\ %s | ||||
| setlocal formatoptions-=t formatoptions+=croql | ||||
|  | ||||
| let b:undo_ftplugin = "setl fo< com< cms<" | ||||
|  | ||||
| " TODO: support exit ... as middle matches? | ||||
| if exists("loaded_matchit") && !exists("b:match_words") | ||||
|   let s:line_start	= '\%(^\s*\)\@<=' | ||||
| @@ -33,10 +35,11 @@ if exists("loaded_matchit") && !exists("b:match_words") | ||||
| 		\     '\<while\>:\<wend\>,' .. | ||||
| 		\     s:line_start .. 'if\%(.*\<then\s*\%($\|''\)\)\@=:\<\%(' .. s:line_start .. 'else\|elseif\)\>:\<end\s\+if\>,' .. | ||||
| 		\     '\<lock\>:\<unlock\>' | ||||
|  | ||||
|   let b:match_skip = 'synIDattr(synID(line("."),col("."),1),"name") =~? "comment\\|string" || ' .. | ||||
| 		\    'strpart(getline("."), 0, col(".") ) =~? "\\<exit\\s\\+"' | ||||
|  | ||||
|   let b:undo_ftplugin ..= " | unlet! b:match_ignorecase b:match_skip b:match_words" | ||||
|  | ||||
|   unlet s:line_start s:not_end s:not_end_or_exit | ||||
| endif | ||||
|  | ||||
| @@ -44,12 +47,10 @@ if (has("gui_win32") || has("gui_gtk")) && !exists("b:browsefilter") | ||||
|   let b:browsefilter = "BASIC Source Files (*.bas)\t*.bas\n" .. | ||||
| 		\      "BASIC Include Files (*.bi, *.bm)\t*.bi;*.bm\n" .. | ||||
| 		\      "All Files (*.*)\t*.*\n" | ||||
|   let b:basic_set_browsefilter = 1 | ||||
|   let b:undo_ftplugin ..= " | unlet! b:browsefilter b:basic_set_browsefilter" | ||||
| endif | ||||
|  | ||||
| let b:undo_ftplugin = "setl fo< com< cms<" .. | ||||
| 		\     " | unlet! b:match_ignorecase b:match_skip b:match_words" .. | ||||
| 		\     " | unlet! b:browsefilter" | ||||
|  | ||||
| let &cpo = s:cpo_save | ||||
| unlet s:cpo_save | ||||
|  | ||||
|   | ||||
| @@ -1,19 +1,16 @@ | ||||
| " Vim filetype plugin file | ||||
| " Language:             fetchmail(1) RC File | ||||
| " Previous Maintainer:  Nikolai Weibull <now@bitwi.se> | ||||
| " Latest Revision:      2008-07-09 | ||||
| " Language:		fetchmail(1) RC File | ||||
| " Maintainer:		Doug Kearns <dougkearns@gmail.com> | ||||
| " Previous Maintainer:	Nikolai Weibull <now@bitwi.se> | ||||
| " Latest Revision:	2022 Jun 30 | ||||
|  | ||||
| if exists("b:did_ftplugin") | ||||
|   finish | ||||
| endif | ||||
| let b:did_ftplugin = 1 | ||||
|  | ||||
| let s:cpo_save = &cpo | ||||
| set cpo&vim | ||||
| setlocal comments=:# commentstring=#\ %s | ||||
| setlocal formatoptions-=t formatoptions+=croql | ||||
|  | ||||
| let b:undo_ftplugin = "setl com< cms< fo<" | ||||
|  | ||||
| setlocal comments=:# commentstring=#\ %s formatoptions-=t formatoptions+=croql | ||||
|  | ||||
| let &cpo = s:cpo_save | ||||
| unlet s:cpo_save | ||||
|   | ||||
| @@ -1,7 +1,7 @@ | ||||
| " Vim filetype plugin file | ||||
| " Language:	FreeBASIC | ||||
| " Maintainer:	Doug Kearns <dougkearns@gmail.com> | ||||
| " Last Change:	2021 Mar 16 | ||||
| " Last Change:	2022 Jun 24 | ||||
|  | ||||
| " Setup {{{1 | ||||
| if exists("b:did_ftplugin") | ||||
| @@ -21,7 +21,8 @@ let &l:comments = "sO:*\ -,mO:*\ \ ,exO:*/,s1:/',mb:',ex:'/,:''," .. &l:comments | ||||
|  | ||||
| " Match words {{{1 | ||||
| if exists("loaded_matchit") | ||||
|   let s:not_end = '\%(end\s\+\)\@<!' | ||||
|   let s:line_start = '\%(^\s*\)\@<=' | ||||
|   let s:not_end    = '\%(end\s\+\)\@<!' | ||||
|  | ||||
|   let b:match_words ..= ',' | ||||
|  | ||||
| @@ -49,17 +50,32 @@ if exists("loaded_matchit") | ||||
|   endif | ||||
|  | ||||
|   let b:match_words ..= s:not_end .. '\<enum\>:\<end\s\+enum\>,' .. | ||||
| 		  \	'^#\s*\%(if\|ifdef\|ifndef\)\>:^#\s*\%(else\|elseif\)\>:^#\s*endif\>,' .. | ||||
| 		  \	'^#\s*macro\>:^#\s*endmacro\>' | ||||
| 		\     s:line_start .. '#\s*\%(if\|ifdef\|ifndef\)\>:' .. | ||||
| 		\       s:line_start .. '#\s*\%(else\|elseif\)\>:' .. | ||||
| 		\     s:line_start .. '#\s*endif\>,' .. | ||||
| 		\     s:line_start .. '#\s*macro\>:' .. s:line_start .. '#\s*endmacro\>,' .. | ||||
| 		\     "/':'/" | ||||
|  | ||||
|   " skip "function = <retval>" | ||||
|   let b:match_skip ..= '|| strpart(getline("."), col(".") - 1) =~? "^\\<function\\s\\+="' | ||||
|   " skip "function = <retval>" and "continue { do | for | while }" | ||||
|   if s:dialect == "qb" | ||||
|     let s:continue = "__continue" | ||||
|   else | ||||
|     let s:continue = "continue" | ||||
|   endif | ||||
|   let b:match_skip ..= ' || strpart(getline("."), col(".") - 1) =~? "^\\<function\\s\\+="' .. | ||||
| 		  \    ' || strpart(getline("."), 0, col(".") ) =~? "\\<' .. s:continue .. '\\s\\+"' | ||||
|  | ||||
|   unlet s:not_end | ||||
|   unlet s:not_end s:line_start | ||||
| endif | ||||
|  | ||||
| if (has("gui_win32") || has("gui_gtk")) && exists("b:basic_set_browsefilter") | ||||
|   let b:browsefilter = "FreeBASIC Source Files (*.bas)\t*.bas\n" .. | ||||
| 		\      "FreeBASIC Header Files (*.bi)\t*.bi\n" .. | ||||
| 		\      "All Files (*.*)\t*.*\n" | ||||
| endif | ||||
|  | ||||
| " Cleanup {{{1 | ||||
| let &cpo = s:cpo_save | ||||
| unlet s:cpo_save | ||||
| unlet s:cpo_save s:dialect | ||||
|  | ||||
| " vim: nowrap sw=2 sts=2 ts=8 noet fdm=marker: | ||||
|   | ||||
							
								
								
									
										24
									
								
								runtime/ftplugin/vue.vim
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										24
									
								
								runtime/ftplugin/vue.vim
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,24 @@ | ||||
| " Vim filetype plugin file | ||||
| " Language:	vue | ||||
|  | ||||
| if exists("b:did_ftplugin") | finish | endif | ||||
| let b:did_ftplugin = 1 | ||||
|  | ||||
| " Make sure the continuation lines below do not cause problems in | ||||
| " compatibility mode. | ||||
| let s:save_cpo = &cpo | ||||
| set cpo-=C | ||||
|  | ||||
| " Copied from ftplugin/html.vim | ||||
| " Original thanks to Johannes Zellner and Benji Fisher. | ||||
| if exists("loaded_matchit") | ||||
|   let b:match_ignorecase = 1 | ||||
|   let b:match_words = '<:>,' | ||||
| 	\ .. '<\@<=[ou]l\>[^>]*\%(>\|$\):<\@<=li\>:<\@<=/[ou]l>,' | ||||
| 	\ .. '<\@<=dl\>[^>]*\%(>\|$\):<\@<=d[td]\>:<\@<=/dl>,' | ||||
| 	\ .. '<\@<=\([^/][^ \t>]*\)[^>]*\%(>\|$\):<\@<=/\1>' | ||||
| endif | ||||
|  | ||||
| " Restore the saved compatibility options. | ||||
| let &cpo = s:save_cpo | ||||
| unlet s:save_cpo | ||||
							
								
								
									
										118
									
								
								runtime/pack/dist/opt/cfilter/plugin/cfilter.vim
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										118
									
								
								runtime/pack/dist/opt/cfilter/plugin/cfilter.vim
									
									
									
									
										vendored
									
									
								
							| @@ -1,62 +1,72 @@ | ||||
| " cfilter.vim: Plugin to filter entries from a quickfix/location list | ||||
| " Last Change: Aug 23, 2018 | ||||
| " Maintainer: Yegappan Lakshmanan (yegappan AT yahoo DOT com) | ||||
| " Version: 1.1 | ||||
| " | ||||
| " Commands to filter the quickfix list: | ||||
| "   :Cfilter[!] /{pat}/ | ||||
| "       Create a new quickfix list from entries matching {pat} in the current | ||||
| "       quickfix list. Both the file name and the text of the entries are | ||||
| "       matched against {pat}. If ! is supplied, then entries not matching | ||||
| "       {pat} are used. The pattern can be optionally enclosed using one of | ||||
| "       the following characters: ', ", /. If the pattern is empty, then the | ||||
| "       last used search pattern is used. | ||||
| "   :Lfilter[!] /{pat}/ | ||||
| "       Same as :Cfilter but operates on the current location list. | ||||
| " | ||||
| if exists("loaded_cfilter") | ||||
|     finish | ||||
| endif | ||||
| let loaded_cfilter = 1 | ||||
| vim9script | ||||
|  | ||||
| func s:Qf_filter(qf, searchpat, bang) | ||||
|     if a:qf | ||||
| 	let Xgetlist = function('getqflist') | ||||
| 	let Xsetlist = function('setqflist') | ||||
| 	let cmd = ':Cfilter' . a:bang | ||||
|     else | ||||
| 	let Xgetlist = function('getloclist', [0]) | ||||
| 	let Xsetlist = function('setloclist', [0]) | ||||
| 	let cmd = ':Lfilter' . a:bang | ||||
|     endif | ||||
| # cfilter.vim: Plugin to filter entries from a quickfix/location list | ||||
| # Last Change: Jun 30, 2022 | ||||
| # Maintainer: Yegappan Lakshmanan (yegappan AT yahoo DOT com) | ||||
| # Version: 2.0 | ||||
| # | ||||
| # Commands to filter the quickfix list: | ||||
| #   :Cfilter[!] /{pat}/ | ||||
| #       Create a new quickfix list from entries matching {pat} in the current | ||||
| #       quickfix list. Both the file name and the text of the entries are | ||||
| #       matched against {pat}. If ! is supplied, then entries not matching | ||||
| #       {pat} are used. The pattern can be optionally enclosed using one of | ||||
| #       the following characters: ', ", /. If the pattern is empty, then the | ||||
| #       last used search pattern is used. | ||||
| #   :Lfilter[!] /{pat}/ | ||||
| #       Same as :Cfilter but operates on the current location list. | ||||
| # | ||||
|  | ||||
|     let firstchar = a:searchpat[0] | ||||
|     let lastchar = a:searchpat[-1:] | ||||
|     if firstchar == lastchar && | ||||
| 		\ (firstchar == '/' || firstchar == '"' || firstchar == "'") | ||||
| 	let pat = a:searchpat[1:-2] | ||||
| 	if pat == '' | ||||
| 	    " Use the last search pattern | ||||
| 	    let pat = @/ | ||||
| 	endif | ||||
|     else | ||||
| 	let pat = a:searchpat | ||||
|     endif | ||||
| def Qf_filter(qf: bool, searchpat: string, bang: string) | ||||
|   var Xgetlist: func | ||||
|   var Xsetlist: func | ||||
|   var cmd: string | ||||
|   var firstchar: string | ||||
|   var lastchar: string | ||||
|   var pat: string | ||||
|   var title: string | ||||
|   var Cond: func | ||||
|   var items: list<any> | ||||
|  | ||||
|   if qf | ||||
|     Xgetlist = function('getqflist') | ||||
|     Xsetlist = function('setqflist') | ||||
|     cmd = ':Cfilter' .. bang | ||||
|   else | ||||
|     Xgetlist = function('getloclist', [0]) | ||||
|     Xsetlist = function('setloclist', [0]) | ||||
|     cmd = ':Lfilter' .. bang | ||||
|   endif | ||||
|  | ||||
|   firstchar = searchpat[0] | ||||
|   lastchar = searchpat[-1 :] | ||||
|   if firstchar == lastchar && | ||||
|               (firstchar == '/' || firstchar == '"' || firstchar == "'") | ||||
|     pat = searchpat[1 : -2] | ||||
|     if pat == '' | ||||
| 	return | ||||
|       # Use the last search pattern | ||||
|       pat = @/ | ||||
|     endif | ||||
|   else | ||||
|     pat = searchpat | ||||
|   endif | ||||
|  | ||||
|     if a:bang == '!' | ||||
| 	let cond = 'v:val.text !~# pat && bufname(v:val.bufnr) !~# pat' | ||||
|     else | ||||
| 	let cond = 'v:val.text =~# pat || bufname(v:val.bufnr) =~# pat' | ||||
|     endif | ||||
|   if pat == '' | ||||
|     return | ||||
|   endif | ||||
|  | ||||
|     let items = filter(Xgetlist(), cond) | ||||
|     let title = cmd . ' /' . pat . '/' | ||||
|     call Xsetlist([], ' ', {'title' : title, 'items' : items}) | ||||
| endfunc | ||||
|   if bang == '!' | ||||
|     Cond = (_, val) => val.text !~# pat && bufname(val.bufnr) !~# pat | ||||
|   else | ||||
|     Cond = (_, val) => val.text =~# pat || bufname(val.bufnr) =~# pat | ||||
|   endif | ||||
|  | ||||
| com! -nargs=+ -bang Cfilter call s:Qf_filter(1, <q-args>, <q-bang>) | ||||
| com! -nargs=+ -bang Lfilter call s:Qf_filter(0, <q-args>, <q-bang>) | ||||
|   items = filter(Xgetlist(), Cond) | ||||
|   title = cmd .. ' /' .. pat .. '/' | ||||
|   Xsetlist([], ' ', {title: title, items: items}) | ||||
| enddef | ||||
|  | ||||
| command! -nargs=+ -bang Cfilter Qf_filter(true, <q-args>, <q-bang>) | ||||
| command! -nargs=+ -bang Lfilter Qf_filter(false, <q-args>, <q-bang>) | ||||
|  | ||||
| # vim: shiftwidth=2 sts=2 expandtab | ||||
|   | ||||
| @@ -40,6 +40,20 @@ continues monotonically after the last flag number in cyrillic .aff file. | ||||
| A couple of words in cyrillic dict used a latin codepoints for 'a' and 'e', | ||||
| that was also corrected. | ||||
|  | ||||
| You should be able to reproduce this with these steps: | ||||
|   * Save the existing sr.aff and sr.dic files, if you have them, they will be | ||||
|     overwritten. | ||||
|   * Create a subfolder "new". | ||||
|   * Put 4 files downloaded from LibreOffice dictionaries GitHub repository in | ||||
|     it: sr.aff, sr-Latn.aff, sr.dic and sr-Latn.dic | ||||
|   * Open Vim and cd into "new" | ||||
|   * Execute:  :so ../convert.vim | ||||
|   * The resulting sr.aff and sr.dic are created in the parent spell folder | ||||
|     (here). | ||||
|   * Now one can generate spl file as usual using the merged dic and aff | ||||
|     files: | ||||
|         env LANG=sr_RS.UTF-8 vim -u NONE -e -c "set enc=utf-8" -c "mkspell! ../sr sr" -c q | ||||
|  | ||||
|  | ||||
| Ivan Pešić | ||||
| 28.06.2022. | ||||
|   | ||||
							
								
								
									
										30
									
								
								runtime/spell/sr/convert.vim
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										30
									
								
								runtime/spell/sr/convert.vim
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,30 @@ | ||||
| :e sr.aff | ||||
| :normal gg | ||||
| :normal wgu$ | ||||
| :3d | ||||
| :4d | ||||
| :normal G | ||||
| :normal o | ||||
| :r sr-Latn.aff | ||||
| :%s#^\(SFX\|PFX\).*[а-џa-ž]\zs$# .#g | ||||
| :normal G | ||||
| ?SET | ||||
| :.,+5d | ||||
| :.,$s#^\(SFX\|PFX\) \zs\(\d\+\)#\= eval(submatch(2) .. ' + 1903')# | ||||
| :w ../sr.aff | ||||
| :bd! | ||||
| :e sr.dic | ||||
| :%s#a#а#g | ||||
| :%s#e#е#g | ||||
| :normal G | ||||
| :normal o | ||||
| :r sr-Latn.dic | ||||
| :normal 201dd | ||||
| :.,$s#/\zs\(\d\+\)\(,\(\d\+\)\)\?$#\=(submatch(2) == '') ? eval(submatch(1) + '1903') : eval(submatch(1) + '1903') .. ',' .. eval(submatch(3) + '1903')# | ||||
| :normal { | ||||
| :normal dd | ||||
| :normal gg | ||||
| :normal C502898 | ||||
| :w ../sr.dic | ||||
| :bd! | ||||
| :q! | ||||
| @@ -3,7 +3,7 @@ | ||||
| " Maintainer:		Doug Kearns <dougkearns@gmail.com> | ||||
| " Previous Maintainer:	Allan Kelly <allan@fruitloaf.co.uk> | ||||
| " Contributors:		Thilo Six | ||||
| " Last Change:		2021 Aug 08 | ||||
| " Last Change:		2022 Jun 22 | ||||
|  | ||||
| " First version based on Micro$soft QBASIC circa 1989, as documented in | ||||
| " 'Learn BASIC Now' by Halvorson&Rygmyr. Microsoft Press 1989. | ||||
| @@ -344,7 +344,7 @@ hi def link basicCommentError	    Error | ||||
| hi def link basicDataString	    basicString | ||||
| hi def link basicFilenumber	    basicTypeSuffix " TODO: better group | ||||
| hi def link basicFloat		    Float | ||||
| hi def link basicFunction	    Identifier | ||||
| hi def link basicFunction	    Function | ||||
| hi def link basicKeyword	    Keyword | ||||
| hi def link basicLineIdentifier	    LineNr | ||||
| hi def link basicLineContinuation   Special | ||||
|   | ||||
| @@ -1,7 +1,10 @@ | ||||
| " Vim syntax file | ||||
| " Language:             fetchmail(1) RC File | ||||
| " Previous Maintainer:  Nikolai Weibull <now@bitwi.se> | ||||
| " Latest Revision:      2006-04-19 | ||||
| " Language:		fetchmail(1) RC File | ||||
| " Maintainer:		Doug Kearns <dougkearns@gmail.com> | ||||
| " Previous Maintainer:	Nikolai Weibull <now@bitwi.se> | ||||
| " Latest Revision:	2022 Jun 30 | ||||
|  | ||||
| " Version 6.4.3 | ||||
|  | ||||
| if exists("b:current_syntax") | ||||
|   finish | ||||
| @@ -10,64 +13,69 @@ endif | ||||
| let s:cpo_save = &cpo | ||||
| set cpo&vim | ||||
|  | ||||
| syn keyword fetchmailTodo       contained FIXME TODO XXX NOTE | ||||
| syn keyword fetchmailTodo	contained FIXME TODO XXX NOTE | ||||
|  | ||||
| syn region  fetchmailComment    start='#' end='$' contains=fetchmailTodo,@Spell | ||||
| syn region  fetchmailComment	start='#' end='$' contains=fetchmailTodo,@Spell | ||||
|  | ||||
| syn match   fetchmailNumber     display '\<\d\+\>' | ||||
| syn match   fetchmailNumber	display '\<\d\+\>' | ||||
|  | ||||
| syn region  fetchmailString     start=+"+ skip=+\\\\\|\\"+ end=+"+ | ||||
|                                 \ contains=fetchmailStringEsc | ||||
| syn region  fetchmailString     start=+'+ skip=+\\\\\|\\'+ end=+'+ | ||||
|                                 \ contains=fetchmailStringEsc | ||||
| syn region  fetchmailString	start=+"+ skip=+\\\\\|\\"+ end=+"+ | ||||
| 				\ contains=fetchmailStringEsc | ||||
| syn region  fetchmailString	start=+'+ skip=+\\\\\|\\'+ end=+'+ | ||||
| 				\ contains=fetchmailStringEsc | ||||
|  | ||||
| syn match   fetchmailStringEsc  contained '\\\([ntb]\|0\d*\|x\x\+\)' | ||||
| syn match   fetchmailStringEsc	contained '\\\([ntb]\|0\d*\|x\x\+\)' | ||||
|  | ||||
| syn region  fetchmailKeyword    transparent matchgroup=fetchmailKeyword | ||||
|                                 \ start='\<poll\|skip\|defaults\>' | ||||
|                                 \ end='\<poll\|skip\|defaults\>' | ||||
|                                 \ contains=ALLBUT,fetchmailOptions,fetchmailSet | ||||
| syn region  fetchmailKeyword	transparent matchgroup=fetchmailKeyword | ||||
| 				\ start='\<poll\|skip\|defaults\>' | ||||
| 				\ end='\<poll\|skip\|defaults\>' | ||||
| 				\ contains=ALLBUT,fetchmailOptions,fetchmailSet | ||||
|  | ||||
| syn keyword fetchmailServerOpts contained via proto[col] local[domains] port | ||||
|                                 \ auth[enticate] timeout envelope qvirtual aka | ||||
|                                 \ interface monitor plugin plugout dns | ||||
|                                 \ checkalias uidl interval netsec principal | ||||
|                                 \ esmtpname esmtppassword | ||||
|                                 \ sslcertck sslcertpath sslfingerprint | ||||
| 				\ service auth[enticate] timeout envelope | ||||
| 				\ qvirtual aka interface monitor plugin plugout | ||||
| 				\ dns checkalias uidl interval tracepolls | ||||
| 				\ principal esmtpname esmtppassword | ||||
| " removed in 6.3.0 | ||||
| syn keyword fetchmailServerOpts contained netsec | ||||
| syn match   fetchmailServerOpts contained '\<bad-header\>' | ||||
| syn match   fetchmailServerOpts contained '\<no\_s\+\(envelope\|dns\|checkalias\|uidl\)' | ||||
|  | ||||
| syn keyword fetchmailUserOpts   contained user[name] is to pass[word] ssl | ||||
|                                 \ sslcert sslkey sslproto folder smtphost | ||||
|                                 \ fetchdomains smtpaddress smtpname antispam | ||||
|                                 \ mda bsmtp preconnect postconnect keep flush | ||||
|                                 \ fetchall rewrite stripcr forcecr pass8bits | ||||
|                                 \ dropstatus dropdelivered mimedecode idle | ||||
|                                 \ limit warnings batchlimit fetchlimit expunge | ||||
|                                 \ tracepolls properties | ||||
| syn match   fetchmailUserOpts   contained '\<no\_s\+\(keep\|flush\|fetchall\|rewrite\|stripcr\|forcecr\|pass8bits\|dropstatus\|dropdelivered\|mimedecode\|noidle\)' | ||||
| syn keyword fetchmailUserOpts	contained user[name] is to pass[word] ssl | ||||
| 				\ sslcert sslcertck sslcertfile sslcertpath | ||||
| 				\ sslfingerprint sslkey sslproto folder | ||||
| 				\ smtphost fetchdomains smtpaddress smtpname | ||||
| 				\ antispam mda bsmtp preconnect postconnect | ||||
| 				\ keep flush limitflush fetchall rewrite | ||||
| 				\ stripcr forcecr pass8bits dropstatus | ||||
| 				\ dropdelivered mimedecode idle limit warnings | ||||
| 				\ batchlimit fetchlimit fetchsizelimit | ||||
| 				\ fastuidl expunge properties | ||||
| 				\ sslcommonname | ||||
| syn match   fetchmailUserOpts	contained '\<no\_s\+\(sslcertck\|keep\|flush\|fetchall\|rewrite\|stripcr\|forcecr\|pass8bits\|dropstatus\|dropdelivered\|mimedecode\|idle\)' | ||||
|  | ||||
| syn keyword fetchmailSpecial    contained here there | ||||
| syn keyword fetchmailSpecial	contained here there | ||||
|  | ||||
| syn keyword fetchmailNoise      and with has wants options | ||||
| syn match   fetchmailNoise      display '[:;,]' | ||||
| syn keyword fetchmailNoise	and with has wants options | ||||
| syn match   fetchmailNoise	display '[:;,]' | ||||
|  | ||||
| syn keyword fetchmailSet        nextgroup=fetchmailOptions skipwhite skipnl set | ||||
| syn keyword fetchmailSet	nextgroup=fetchmailOptions skipwhite skipnl set | ||||
|  | ||||
| syn keyword fetchmailOptions    daemon postmaster bouncemail spambounce logfile | ||||
|                                 \ idfile syslog nosyslog properties | ||||
| syn match   fetchmailOptions    '\<no\_s\+\(bouncemail\|spambounce\)' | ||||
| syn keyword fetchmailOptions	daemon postmaster bouncemail spambounce | ||||
| 				\ softbounce logfile idfile syslog properties | ||||
| syn match   fetchmailOptions	'\<no\_s\+\(bouncemail\|spambounce\|softbounce\|syslog\)' | ||||
|  | ||||
| hi def link fetchmailComment    Comment | ||||
| hi def link fetchmailTodo       Todo | ||||
| hi def link fetchmailNumber     Number | ||||
| hi def link fetchmailString     String | ||||
| hi def link fetchmailStringEsc  SpecialChar | ||||
| hi def link fetchmailKeyword    Keyword | ||||
| hi def link fetchmailComment	Comment | ||||
| hi def link fetchmailTodo	Todo | ||||
| hi def link fetchmailNumber	Number | ||||
| hi def link fetchmailString	String | ||||
| hi def link fetchmailStringEsc	SpecialChar | ||||
| hi def link fetchmailKeyword	Keyword | ||||
| hi def link fetchmailServerOpts Identifier | ||||
| hi def link fetchmailUserOpts   Identifier | ||||
| hi def link fetchmailSpecial    Special | ||||
| hi def link fetchmailSet        Keyword | ||||
| hi def link fetchmailOptions    Identifier | ||||
| hi def link fetchmailUserOpts	Identifier | ||||
| hi def link fetchmailSpecial	Special | ||||
| hi def link fetchmailSet	Keyword | ||||
| hi def link fetchmailOptions	Identifier | ||||
|  | ||||
| let b:current_syntax = "fetchmail" | ||||
|  | ||||
|   | ||||
| @@ -1,14 +1,14 @@ | ||||
| " Vim syntax file | ||||
| " Language:    FreeBasic | ||||
| " Maintainer:  Mark Manning <markem@sim1.us> | ||||
| " Updated:     10/9/2019 | ||||
| " Version:		7.0b | ||||
| " Language:		FreeBASIC | ||||
| " Maintainer:		Doug Kearns <dougkearns@gmail.com> | ||||
| " Previous Maintainer:	Mark Manning <markem@sim1.us> | ||||
| " Last Change:		2022 Jun 26 | ||||
| " | ||||
| " Description: | ||||
| " | ||||
| "	Based originally on the work done by Allan Kelly <Allan.Kelly@ed.ac.uk> | ||||
| "	Updated by Mark Manning <markem@sim1.us> | ||||
| "	Applied FreeBasic support to the already excellent support | ||||
| "	Applied FreeBASIC support to the already excellent support | ||||
| "	for standard basic syntax (like QB). | ||||
| " | ||||
| "	First version based on Micro$soft QBASIC circa | ||||
| @@ -17,215 +17,595 @@ | ||||
| "	not a complete implementation yet.  Send suggestions to | ||||
| "	the maintainer. | ||||
| " | ||||
| "	TODO: split this into separate dialect-based files, possibly with a common base | ||||
| " | ||||
| "	Quit when a (custom) syntax file was already loaded (Taken from c.vim) | ||||
| " | ||||
| if exists("b:current_syntax") | ||||
|   finish | ||||
| endif | ||||
| " | ||||
| "	Dialect detection | ||||
| " | ||||
| let s:lang = freebasic#GetDialect() | ||||
| " | ||||
| "	Whitespace Errors | ||||
| " | ||||
| if exists("freebasic_space_errors") | ||||
|   if !exists("freebasic_no_trail_space_error") | ||||
|     syn match freebasicSpaceError display excludenl "\s\+$" | ||||
|   endif | ||||
|   if !exists("freebasic_no_tab_space_error") | ||||
|     syn match freebasicSpaceError display " \+\t"me=e-1 | ||||
|   endif | ||||
| endif | ||||
| " | ||||
| "	Be sure to turn on the "case ignore" since current versions | ||||
| "	of freebasic support both upper as well as lowercase | ||||
| "	letters. - MEM 10/1/2006 | ||||
| " | ||||
| syn case ignore | ||||
| " | ||||
| "	This list of keywords is taken directly from the FreeBasic | ||||
| "	user's guide as presented by the FreeBasic online site. | ||||
| " | ||||
| syn keyword	freebasicArrays			ERASE LBOUND REDIM PRESERVE UBOUND | ||||
|  | ||||
| syn keyword	freebasicBitManipulation	BIT BITRESET BITSET HIBYTE HIWORD LOBYTE LOWORD SHL SHR | ||||
|  | ||||
| syn keyword	freebasicCompilerSwitches	DEFBYTE DEFDBL DEFINT DEFLNG DEFLNGINT DEFSHORT DEFSNG DEFSTR | ||||
| syn keyword	freebasicCompilerSwitches	DEFUBYTE DEFUINT DEFULNGINT DEFUSHORT | ||||
| syn match	freebasicCompilerSwitches	"\<option\s+\(BASE\|BYVAL\|DYNAMIC\|ESCAPE\|EXPLICIT\|NOKEYWORD\)\>" | ||||
| syn match	freebasicCompilerSwitches	"\<option\s+\(PRIVATE\|STATIC\)\>" | ||||
|  | ||||
| syn region	freebasicConditional		start="\son\s+" skip=".*" end="gosub" | ||||
| syn region	freebasicConditional		start="\son\s+" skip=".*" end="goto" | ||||
| syn match	freebasicConditional		"\<select\s+case\>" | ||||
| syn keyword	freebasicConditional		if iif then case else elseif with | ||||
|  | ||||
| syn match	freebasicConsole		"\<open\s+\(CONS\|ERR\|PIPE\|SCRN\)\>" | ||||
| syn keyword	freebasicConsole		BEEP CLS CSRLIN LOCATE PRINT POS SPC TAB VIEW WIDTH | ||||
|  | ||||
| syn keyword	freebasicDataTypes		BYTE AS DIM CONST DOUBLE ENUM INTEGER LONG LONGINT SHARED SHORT STRING | ||||
| syn keyword	freebasicDataTypes		SINGLE TYPE UBYTE UINTEGER ULONGINT UNION UNSIGNED USHORT WSTRING ZSTRING | ||||
|  | ||||
| syn keyword	freebasicDateTime		DATE DATEADD DATEDIFF DATEPART DATESERIAL DATEVALUE DAY HOUR MINUTE | ||||
| syn keyword	freebasicDateTime		MONTH MONTHNAME NOW SECOND SETDATE SETTIME TIME TIMESERIAL TIMEVALUE | ||||
| syn keyword	freebasicDateTime		TIMER YEAR WEEKDAY WEEKDAYNAME | ||||
|  | ||||
| syn keyword	freebasicDebug			ASSERT STOP | ||||
|  | ||||
| syn keyword	freebasicErrorHandling		ERR ERL ERROR LOCAL RESUME | ||||
| syn match	freebasicErrorHandling		"\<resume\s+next\>" | ||||
| syn match	freebasicErrorHandling		"\<on\s+error\>" | ||||
|  | ||||
| syn match	freebasicFiles			"\<get\s+#\>" | ||||
| syn match	freebasicFiles			"\<input\s+#\>" | ||||
| syn match	freebasicFiles			"\<line\s+input\s+#\>" | ||||
| syn match	freebasicFiles			"\<put\s+#\>" | ||||
| syn keyword	freebasicFiles			ACCESS APPEND BINARY BLOAD BSAVE CLOSE EOF FREEFILE INPUT LOC | ||||
| syn keyword	freebasicFiles			LOCK LOF OPEN OUTPUT RANDOM RESET SEEK UNLOCK WRITE | ||||
|  | ||||
| syn keyword	freebasicFunctions		ALIAS ANY BYREF BYVAL CALL CDECL CONSTRUCTOR DESTRUCTOR | ||||
| syn keyword	freebasicFunctions		DECLARE FUNCTION LIB OVERLOAD PASCAL STATIC SUB STDCALL | ||||
| syn keyword	freebasicFunctions		VA_ARG VA_FIRST VA_NEXT | ||||
|  | ||||
| syn match	freebasicGraphics		"\<palette\s+get\>" | ||||
| syn keyword	freebasicGraphics		ALPHA CIRCLE CLS COLOR CUSTOM DRAW FLIP GET | ||||
| syn keyword	freebasicGraphics		IMAGECREATE IMAGEDESTROY LINE PAINT PALETTE PCOPY PMAP POINT | ||||
| syn keyword	freebasicGraphics		PRESET PSET PUT RGB RGBA SCREEN SCREENCOPY SCREENINFO SCREENLIST | ||||
| syn keyword	freebasicGraphics		SCREENLOCK SCREENPTR SCREENRES SCREENSET SCREENSYNC SCREENUNLOCK | ||||
| syn keyword	freebasicGraphics		TRANS USING VIEW WINDOW | ||||
|  | ||||
| syn match	freebasicHardware		"\<open\s+com\>" | ||||
| syn keyword	freebasicHardware		INP OUT WAIT LPT LPOS LPRINT | ||||
|  | ||||
| syn keyword	freebasicLogical		AND EQV IMP OR NOT XOR | ||||
|  | ||||
| syn keyword	freebasicMath			ABS ACOS ASIN ATAN2 ATN COS EXP FIX INT LOG MOD RANDOMIZE | ||||
| syn keyword	freebasicMath			RND SGN SIN SQR TAN | ||||
|  | ||||
| syn keyword	freebasicMemory			ALLOCATE CALLOCATE CLEAR DEALLOCATE FIELD FRE PEEK POKE REALLOCATE | ||||
|  | ||||
| syn keyword	freebasicMisc			ASM DATA LET TO READ RESTORE SIZEOF SWAP OFFSETOF | ||||
|  | ||||
| syn keyword	freebasicModularizing		CHAIN COMMON EXPORT EXTERN DYLIBFREE DYLIBLOAD DYLIBSYMBOL | ||||
| syn keyword	freebasicModularizing		PRIVATE PUBLIC | ||||
|  | ||||
| syn keyword	freebasicMultithreading		MUTEXCREATE MUTEXDESTROY MUTEXLOCK MUTEXUNLOCK THREADCREATE THREADWAIT | ||||
|  | ||||
| syn keyword	freebasicShell			CHDIR DIR COMMAND ENVIRON EXEC EXEPATH KILL NAME MKDIR RMDIR RUN | ||||
|  | ||||
| syn keyword	freebasicEnviron		SHELL SYSTEM WINDOWTITLE POINTERS | ||||
|  | ||||
| syn keyword	freebasicLoops			FOR LOOP WHILE WEND DO CONTINUE STEP UNTIL next | ||||
|  | ||||
| syn match	freebasicInclude		"\<#\s*\(inclib\|include\)\>" | ||||
| syn match	freebasicInclude		"\<\$\s*include\>" | ||||
|  | ||||
| syn keyword	freebasicPointer		PROCPTR PTR SADD STRPTR VARPTR | ||||
|  | ||||
| syn keyword	freebasicPredefined		__DATE__ __FB_DOS__ __FB_LINUX__ __FB_MAIN__ __FB_MIN_VERSION__ | ||||
| syn keyword	freebasicPredefined		__FB_SIGNATURE__ __FB_VERSION__ __FB_WIN32__ __FB_VER_MAJOR__ | ||||
| syn keyword	freebasicPredefined		__FB_VER_MINOR__ __FB_VER_PATCH__ __FILE__ __FUNCTION__ | ||||
| syn keyword	freebasicPredefined		__LINE__ __TIME__ | ||||
|  | ||||
| syn match	freebasicPreProcessor		"\<^#\s*\(define\|undef\)\>" | ||||
| syn match	freebasicPreProcessor		"\<^#\s*\(ifdef\|ifndef\|else\|elseif\|endif\|if\)\>" | ||||
| syn match	freebasicPreProcessor		"\<#\s*error\>" | ||||
| syn match	freebasicPreProcessor		"\<#\s*\(print\|dynamic\|static\)\>" | ||||
| syn keyword	freebasicPreProcessor		DEFINED ONCE | ||||
|  | ||||
| syn keyword	freebasicProgramFlow		END EXIT GOSUB GOTO | ||||
| syn keyword	freebasicProgramFlow		IS RETURN SCOPE SLEEP | ||||
|  | ||||
| syn keyword	freebasicString			INSTR LCASE LEFT LEN LSET LTRIM MID RIGHT RSET RTRIM | ||||
| syn keyword	freebasicString			SPACE STRING TRIM UCASE ASC BIN CHR CVD CVI CVL CVLONGINT | ||||
| syn keyword	freebasicString			CVS CVSHORT FORMAT HEX MKD MKI MKL MKLONGINT MKS MKSHORT | ||||
| syn keyword	freebasicString			OCT STR VAL VALLNG VALINT VALUINT VALULNG | ||||
|  | ||||
| syn keyword	freebasicTypeCasting		CAST CBYTE CDBL CINT CLNG CLNGINT CPTR CSHORT CSIGN CSNG | ||||
| syn keyword	freebasicTypeCasting		CUBYTE CUINT CULNGINT CUNSG CURDIR CUSHORT | ||||
|  | ||||
| syn match	freebasicUserInput		"\<line\s+input\>" | ||||
| syn keyword	freebasicUserInput		GETJOYSTICK GETKEY GETMOUSE INKEY INPUT MULTIKEY SETMOUSE | ||||
| " | ||||
| "	Do the Basic variables names first.  This is because it | ||||
| "	is the most inclusive of the tests.  Later on we change | ||||
| "	this so the identifiers are split up into the various | ||||
| "	types of identifiers like functions, basic commands and | ||||
| "	such. MEM 9/9/2006 | ||||
| " | ||||
| syn match	freebasicIdentifier			"\<[a-zA-Z_][a-zA-Z0-9_]*\>" | ||||
| syn match	freebasicGenericFunction	"\<[a-zA-Z_][a-zA-Z0-9_]*\>\s*("me=e-1,he=e-1 | ||||
| if s:lang =~# '\<\%(qb\|fblite\)\>' | ||||
|   syn iskeyword @,48-57,_,192-255,. | ||||
|   syn match	freebasicIdentifier		"\<\h\%(\w\|\.\)*\>" | ||||
|   syn match	freebasicGenericFunction	"\<\h\%(\w\|\.\)*\>\ze\s*(" | ||||
| else | ||||
|   syn iskeyword @,48-57,_,192-255 | ||||
|   syn match	freebasicIdentifier		"\<\h\w*\>" | ||||
|   syn match	freebasicGenericFunction	"\<\h\w*\>\ze\s*(" | ||||
| endif | ||||
| " | ||||
| "	Function list | ||||
| "	This list of keywords is taken directly from the FreeBASIC | ||||
| "	user's guide as presented by the FreeBASIC online site. | ||||
| " | ||||
| syn keyword	freebasicTodo		contained TODO | ||||
| syn keyword	freebasicArrays			ERASE LBOUND PRESERVE REDIM UBOUND | ||||
|  | ||||
| " array.bi | ||||
| syn keyword	freebasicArrays			ARRAYLEN ARRAYSIZE | ||||
| if s:lang == "fb" | ||||
|   syn keyword	freebasicArrays			ArrayConstDescriptorPtr ArrayDescriptorPtr FBARRAY | ||||
| endif | ||||
|  | ||||
| if s:lang == "qb" | ||||
|   syn keyword	freebasicAsm			__ASM | ||||
|   syn match	freebasicAsm			"\<end\s\+__asm\>" | ||||
| else | ||||
|   syn keyword	freebasicAsm			ASM | ||||
|   syn match	freebasicAsm			"\<end\s\+asm\>" | ||||
| endif | ||||
|  | ||||
| if s:lang == "qb" | ||||
|   syn keyword	freebasicBitManipulation	__BIT __BITRESET __BITSET __HIBYTE __HIWORD __LOBYTE __LOWORD | ||||
| else | ||||
|   syn keyword	freebasicBitManipulation	BIT BITRESET BITSET HIBYTE HIWORD LOBYTE LOWORD | ||||
| endif | ||||
|  | ||||
| if s:lang != "fb" | ||||
|   syn keyword	freebasicCompilerSwitches	DEFDBL DEFINT DEFLNG DEFSNG DEFSTR | ||||
| endif | ||||
| if s:lang == "qb" | ||||
|   syn keyword	freebasicCompilerSwitches	__DEFBYTE __DEFLONGINT __DEFSHORT __DEFUBYTE __DEFUINT __DEFULONGINT __DEFUSHORT | ||||
| elseif s:lang == "fblite" || s:lang == "deprecated" | ||||
|   syn keyword	freebasicCompilerSwitches	DEFBYTE DEFLONGINT DEFSHORT DEFUBYTE DEFUINT DEFUILONGINT DEFUSHORT | ||||
| endif | ||||
|  | ||||
| syn match	freebasicCompilerSwitches	"\<option\s\+\%(BASE\|BYVAL\|DYNAMIC\|ESCAPE\|EXPLICIT\|GOSUB\|NOGOSUB\)\>" | ||||
| syn match	freebasicCompilerSwitches	"\<option\s\+\%(NOKEYWORD\|PRIVATE\|STATIC\)\>" | ||||
|  | ||||
| syn keyword	freebasicData			DATA READ RESTORE | ||||
|  | ||||
| syn keyword	freebasicProgramFlow		EXIT GOTO RETURN SLEEP | ||||
| syn match	freebasicProgramFlow		"\<end\>" | ||||
| if s:lang == "qb" | ||||
|   syn keyword	freebasicProgramFlow		__SLEEP | ||||
| endif | ||||
| if s:lang == "fblite" || s:lang == "qb" | ||||
|   syn keyword	freebasicProgramFlow		GOSUB | ||||
| endif | ||||
| if s:lang == "fb" || s:lang == "deprecated" | ||||
|   syn keyword	freebasicProgramFlow		SCOPE | ||||
|   syn match	freebasicProgramFlow		"\<end\s\+scope\>" | ||||
| endif | ||||
|  | ||||
| if s:lang == "fblite" || s:lang == "qb" | ||||
|   syn region	freebasicConditional		matchgroup=freebasicConditional start="\<on\>" end="\<gosub\>" transparent | ||||
|   syn region	freebasicConditional		matchgroup=freebasicConditional start="\<on\>" end="\<goto\>"  transparent | ||||
| endif | ||||
| syn keyword	freebasicConditional		IF THEN ELSE ELSEIF | ||||
| if s:lang == "qb" | ||||
|   syn keyword	freebasicConditional		__IIF __WITH | ||||
|   syn match	freebasicConditional		"\<end\s\+__with\>" | ||||
| else | ||||
|   syn keyword	freebasicConditional		IIF WITH | ||||
|   syn match	freebasicConditional		"\<end\s\+with\>" | ||||
| endif | ||||
| syn match	freebasicConditional		"\<end\s\+if\>" | ||||
| syn match	freebasicConditional		"\<select\s\+case\>" | ||||
| syn match	freebasicConditional		"\<case\>" | ||||
| syn match	freebasicConditional		"\<case\s\+is\>" | ||||
| syn match	freebasicConditional		"\<end\s\+select\>" | ||||
|  | ||||
| syn keyword	freebasicConsole		BEEP CLS CSRLIN LOCATE PRINT POS SPC TAB USING VIEW WIDTH | ||||
| syn match	freebasicConsole		"?" | ||||
|  | ||||
| syn keyword	freebasicDataTypes		SINGLE DOUBLE INTEGER LONG | ||||
| syn match	freebasicDataTypes		"\<string\>" | ||||
| syn keyword	freebasicDataTypes		AS DIM CONST ENUM SHARED TYPE | ||||
| syn match	freebasicDataTypes		"\<end\s\+enum\>" | ||||
| syn match	freebasicDataTypes		"\<end\s\+type\>" | ||||
| if s:lang == "qb" | ||||
|   syn keyword	freebasicDataTypes		__BOOLEAN __BYTE __LONGINT __SHORT __UBYTE __UINTEGER __ULONG __ULONGINT __UNSIGNED __USHORT __ZSTRING | ||||
|   syn match	freebasicDataTypes		"\<__WSTRING\>" | ||||
|   syn keyword	freebasicDataTypes		__EXPLICIT __EXTENDS __IMPLEMENTS __OBJECT __POINTER __PTR __SIZEOF __TYPEOF | ||||
|   syn keyword	freebasicDataTypes		__UNION | ||||
|   syn match	freebasicDataTypes		"\<end\s\+__union\>" | ||||
| else | ||||
|   syn keyword	freebasicDataTypes		BOOLEAN BYTE LONGINT SHORT UBYTE UINTEGER ULONG ULONGINT UNSIGNED USHORT ZSTRING | ||||
|   syn match	freebasicDataTypes		"\<WSTRING\>" | ||||
|   syn keyword	freebasicDataTypes		EXPLICIT EXTENDS IMPLEMENTS OBJECT POINTER PTR SIZEOF TYPEOF | ||||
|   syn keyword	freebasicDataTypes		UNION | ||||
|   syn match	freebasicDataTypes		"\<end\s\+union\>" | ||||
| endif | ||||
| if s:lang == "fb" | ||||
|   syn keyword	freebasicDataTypes		BASE CLASS THIS VAR | ||||
| endif | ||||
|  | ||||
| if s:lang == "qb" | ||||
|   syn match	freebasicDateTime		"\<\%(date\|time\)\$" | ||||
| elseif s:lang == "fblite" || s:lang == "deprecated" | ||||
|   syn match	freebasicDateTime		"\<\%(date\|time\)\>\$\=" | ||||
| else " fb | ||||
|   syn keyword	freebasicDateTime		DATE TIME | ||||
| endif | ||||
| syn keyword	freebasicDateTime		SETDATE SETTIME | ||||
|  | ||||
| " datetime.bi | ||||
| syn keyword	freebasicDateTime		DATEADD DATEDIFF DATEPART DATESERIAL DATEVALUE DAY HOUR ISDATE MINUTE | ||||
| syn keyword	freebasicDateTime		MONTH MONTHNAME NOW SECOND TIMESERIAL TIMEVALUE | ||||
| syn keyword	freebasicDateTime		TIMER YEAR WEEKDAY WEEKDAYNAME | ||||
|  | ||||
| syn keyword	freebasicDebug			STOP | ||||
| if s:lang == "qb" | ||||
|   syn keyword	freebasicDebug			__ASSERT __ASSERTWARN | ||||
| else | ||||
|   syn keyword	freebasicDebug			ASSERT ASSERTWARN | ||||
| endif | ||||
|  | ||||
| syn keyword	freebasicErrorHandling		ERR ERL ERROR | ||||
| if s:lang == "qb" | ||||
|   syn keyword	freebasicErrorHandling		__ERFN __ERMN | ||||
|   syn match	freebasicErrorHandling		"\<on\s\+error\>" | ||||
| else | ||||
|   syn keyword	freebasicErrorHandling		ERFN ERMN | ||||
|   syn match	freebasicErrorHandling		"\<on\s\+\%(local\s\+\)\=error\>" | ||||
| endif | ||||
| if s:lang != "fb" | ||||
|   syn match	freebasicErrorHandling		"\<resume\%(\s\+next\)\=\>" | ||||
| endif | ||||
|  | ||||
| syn match	freebasicFiles			"\<get\s\+#\>" | ||||
| syn match	freebasicFiles			"\<input\s\+#\>" | ||||
| syn match	freebasicFiles			"\<line\s\+input\s\+#\>" | ||||
| syn match	freebasicFiles			"\<put\s\+#\>" | ||||
| syn keyword	freebasicFiles			ACCESS APPEND BINARY CLOSE EOF FREEFILE INPUT LOC | ||||
| syn keyword	freebasicFiles			LOCK LOF OUTPUT RANDOM RESET SEEK UNLOCK WRITE | ||||
| syn match	freebasicFiles			"\<open\>" | ||||
| if s:lang == "qb" | ||||
|   syn keyword	freebasicFiles			__ENCODING | ||||
| else | ||||
|   syn keyword	freebasicFiles			ENCODING WINPUT | ||||
|   syn match	freebasicFiles			"\<open\s\+\%(cons\|err\|pipe\|scrn\)\>" | ||||
| endif | ||||
|  | ||||
| " file.bi | ||||
| syn keyword	freebasicFiles			FILEATTR FILECOPY FILEDATETIME FILEEXISTS FILEFLUSH FILELEN FILESETEOF | ||||
|  | ||||
| syn keyword	freebasicFunctions		ALIAS BYREF BYVAL CDECL DECLARE LIB NAKED PASCAL STATIC STDCALL | ||||
| syn match	freebasicFunctions		"\<option\ze\s*(" | ||||
|  | ||||
| if s:lang == "qb" | ||||
|   syn keyword	freebasicFunctions		__CVA_ARG __CVA_COPY __CVA_END __CVA_LIST __CVA_START | ||||
|   syn keyword	freebasicFunctions		__VA_ARG __VA_FIRST __VA_NEXT | ||||
| else | ||||
|   syn keyword	freebasicFunctions		CVA_ARG CVA_COPY CVA_END CVA_LIST CVA_START | ||||
|   syn keyword	freebasicFunctions		VA_ARG VA_FIRST VA_NEXT | ||||
|   syn keyword	freebasicFunctions		ANY OVERLOAD | ||||
| endif | ||||
|  | ||||
| syn keyword	freebasicFunctions		FUNCTION SUB | ||||
| syn match	freebasicFunctions		"\<end\s\+function\>" | ||||
| syn match	freebasicFunctions		"\<end\s\+sub\>" | ||||
|  | ||||
| if s:lang == "fb" | ||||
|   syn keyword	freebasicFunctions		ABSTRACT OVERRIDE VIRTUAL __THISCALL | ||||
|   syn keyword	freebasicFunctions		CONSTRUCTOR DESTRUCTOR OPERATOR PROPERTY | ||||
|   syn match	freebasicFunctions		"\<end\s\+constructor\>" | ||||
|   syn match	freebasicFunctions		"\<end\s\+destructor\>" | ||||
|   syn match	freebasicFunctions		"\<end\s\+operator\>" | ||||
|   syn match	freebasicFunctions		"\<end\s\+property\>" | ||||
| else | ||||
|   syn keyword	freebasicFunctions		CALL | ||||
| endif | ||||
|  | ||||
| syn match	freebasicGraphics		"\<palette\s\+get\>" | ||||
| syn keyword	freebasicGraphics		ADD ALPHA BLOAD BSAVE CIRCLE CLS COLOR DRAW GET | ||||
| syn keyword	freebasicGraphics		LINE PAINT PALETTE PCOPY PMAP POINT | ||||
| syn keyword	freebasicGraphics		PRESET PSET PUT SCREEN | ||||
| syn keyword	freebasicGraphics		TRANS WINDOW | ||||
| if s:lang == "qb" | ||||
|   syn keyword	freebasicGraphics		__FLIP __IMAGECONVERTROW __IMAGECREATE __IMAGEDESTROY __IMAGEINFO __POINTCOORD | ||||
|   syn keyword	freebasicGraphics		__RGB __RGBA __SCREENCOPY __SCREENCONTROL __SCREENEVENT __SCREENGLPROC __SCREENINFO | ||||
|   syn keyword	freebasicGraphics		__SCREENLIST __SCREENLOCK __SCREENPTR __SCREENRES __SCREENSET __SCREENSYNC | ||||
|   syn keyword	freebasicGraphics		__SCREENUNLOCK __WINDOWTITLE | ||||
| else | ||||
|   syn keyword	freebasicGraphics		CUSTOM | ||||
|   syn keyword	freebasicGraphics		FLIP IMAGECONVERTROW IMAGECREATE IMAGEDESTROY IMAGEINFO POINTCOORD | ||||
|   syn keyword	freebasicGraphics		RGB RGBA SCREENCOPY SCREENCONTROL SCREENEVENT SCREENGLPROC SCREENINFO | ||||
|   syn keyword	freebasicGraphics		SCREENLIST SCREENLOCK SCREENPTR SCREENRES SCREENSET SCREENSYNC | ||||
|   syn keyword	freebasicGraphics		SCREENUNLOCK WINDOWTITLE | ||||
| endif | ||||
|  | ||||
| if s:lang != "qb" | ||||
|   syn match	freebasicHardware		"\<open\s\+\%(com\|lpt\)\>" | ||||
| endif | ||||
| syn keyword	freebasicHardware		INP OUT WAIT LPOS LPRINT | ||||
|  | ||||
| syn keyword	freebasicMath			ABS ATN COS EXP FIX FRAC INT LOG MOD RANDOMIZE RND SGN SIN SQR TAN | ||||
|  | ||||
| if s:lang == "qb" | ||||
|   syn keyword	freebasicMath			__ACOS __ASIN __ATAN2 | ||||
| else | ||||
|   syn keyword	freebasicMath			ACOS ASIN ATAN2 | ||||
| endif | ||||
|  | ||||
| if s:lang == "qb" | ||||
|   syn keyword	freebasicMemory			__ALLOCATE __CALLOCATE __DEALLOCATE __REALLOCATE | ||||
| else | ||||
|   syn keyword	freebasicMemory			ALLOCATE CALLOCATE DEALLOCATE REALLOCATE | ||||
|   syn keyword	freebasicMemory			PEEK POKE CLEAR FB_MEMCOPY FB_MEMCOPYCLEAR FB_MEMMOVE SWAP SADD | ||||
|   syn keyword	freebasicMemory			FIELD FRE | ||||
| endif | ||||
|  | ||||
| syn keyword	freebasicMisc			LET TO | ||||
| if s:lang == "qb" | ||||
|   syn keyword freebasicMisc			__OFFSETOF | ||||
| else | ||||
|   syn keyword freebasicMisc			OFFSETOF | ||||
| endif | ||||
|  | ||||
| syn keyword	freebasicModularizing		CHAIN COMMON | ||||
| if s:lang == "fb" | ||||
|   syn keyword	freebasicModularizing		EXTERN | ||||
|   syn match	freebasicModularizing		"\<end\s\+extern\>" | ||||
|   syn keyword	freebasicModularizing		PROTECTED | ||||
| endif | ||||
| if s:lang == "qb" | ||||
|   syn keyword	freebasicModularizing		__EXPORT __IMPORT __DYLIBFREE __DYLIBLOAD __DYLIBSYMBOL | ||||
| else | ||||
|   syn keyword	freebasicModularizing		EXPORT IMPORT DYLIBFREE DYLIBLOAD DYLIBSYMBOL | ||||
|   syn keyword	freebasicModularizing		PRIVATE PUBLIC | ||||
|   syn keyword	freebasicModularizing		NAMESPACE | ||||
|   syn match	freebasicModularizing		"\<end\s\+namespace\>" | ||||
| endif | ||||
|  | ||||
| if s:lang != "qb" | ||||
|   syn keyword	freebasicMultithreading		MUTEXCREATE MUTEXDESTROY MUTEXLOCK MUTEXUNLOCK THREADCREATE THREADWAIT | ||||
|   syn keyword	freebasicMultithreading		CONDBROADCAST CONDCREATE CONDDESTROY CONDSIGNAL CONDWAIT | ||||
|   syn keyword	freebasicMultithreading		THREADCALL THREADDETACH THREADSELF | ||||
| endif | ||||
|  | ||||
| syn keyword	freebasicShell			CHDIR KILL NAME MKDIR RMDIR RUN SETENVIRON | ||||
| if s:lang == "qb" | ||||
|   syn keyword	freebasicShell			__CURDIR __DIR __EXEC __EXEPATH | ||||
|   syn match	freebasicString			"\<\%(command\|environ\)\$" | ||||
| else | ||||
|   " fbio.bi | ||||
|   syn keyword	freebasicShell			ISREDIRECTED | ||||
|   syn keyword	freebasicShell			CURDIR DIR EXEC EXEPATH | ||||
|   syn match	freebasicString			"\<\%(command\|environ\)\>\$\=" | ||||
| endif | ||||
|  | ||||
| syn keyword	freebasicEnviron		SHELL SYSTEM | ||||
|  | ||||
| syn keyword	freebasicLoops			FOR LOOP WHILE WEND DO STEP UNTIL NEXT | ||||
| if s:lang == "qb" | ||||
|   syn keyword	freebasicLoops			__CONTINUE | ||||
| else | ||||
|   syn keyword	freebasicLoops			CONTINUE | ||||
| endif | ||||
| " | ||||
| "	File numbers | ||||
| " | ||||
| syn match	freebasicFilenumber		"#\d\+" | ||||
| syn match	freebasicFilenumber		"#\a[[:alpha:].]*[%&!#]\=" | ||||
|  | ||||
| syn match	freebasicMetacommand		"$\s*\%(dynamic\|static\)" | ||||
| syn match	freebasicMetacommand		"$\s*include\s*\%(once\)\=\s*:\s*'[^']\+'" | ||||
| syn match	freebasicMetacommand		'$\s*include\s*\%(once\)\=\s*:\s*"[^"]\+"' | ||||
| syn match	freebasicMetacommand		'$\s*lang\s*:\s*"[^"]\+"' | ||||
| " | ||||
| "	Intrinsic defines | ||||
| " | ||||
| syn keyword	freebasicPredefined		__DATE__ __DATE_ISO__ | ||||
| syn keyword	freebasicPredefined		__FB_64BIT__ __FB_ARGC__ __FB_ARG_COUNT__ __FB_ARG_EXTRACT__ __FB_ARG_LEFTOF__ | ||||
| syn keyword	freebasicPredefined		__FB_ARG_RIGHTOF__ __FB_ARGV__ __FB_ARM__ __FB_ASM__ __FB_BACKEND__ | ||||
| syn keyword	freebasicPredefined		__FB_BIGENDIAN__ __FB_BUILD_DATE__ __FB_BUILD_DATE_ISO__ __FB_BUILD_SHA1__ | ||||
| syn keyword	freebasicPredefined		__FB_CYGWIN__ __FB_DARWIN__ __FB_DEBUG__ __FB_DOS__ __FB_ERR__ __FB_EVAL__ | ||||
| syn keyword	freebasicPredefined		__FB_FPMODE__ __FB_FPU__ __FB_FREEBSD__ __FB_GCC__ __FB_GUI__ __FB_JOIN__ | ||||
| syn keyword	freebasicPredefined		__FB_LANG__ __FB_LINUX__ __FB_MAIN__ __FB_MIN_VERSION__ __FB_MT__ __FB_NETBSD__ | ||||
| syn keyword	freebasicPredefined		__FB_OPENBSD__ __FB_OPTIMIZE__ __FB_OPTION_BYVAL__ __FB_OPTION_DYNAMIC__ | ||||
| syn keyword	freebasicPredefined		__FB_OPTION_ESCAPE__ __FB_OPTION_EXPLICIT__ __FB_OPTION_GOSUB__ | ||||
| syn keyword	freebasicPredefined		__FB_OPTION_PRIVATE__ __FB_OUT_DLL__ __FB_OUT_EXE__ __FB_OUT_LIB__ __FB_OUT_OBJ__ | ||||
| syn keyword	freebasicPredefined		__FB_PCOS__ __FB_PPC__ __FB_QUOTE__ __FB_SIGNATURE__ __FB_SSE__ __FB_UNIQUEID__ | ||||
| syn keyword	freebasicPredefined		__FB_UNIQUEID_POP__ __FB_UNIQUEID_PUSH__ __FB_UNIX__ __FB_UNQUOTE__ | ||||
| syn keyword	freebasicPredefined		__FB_VECTORIZE__ __FB_VER_MAJOR__ __FB_VER_MINOR__ __FB_VER_PATCH__ __FB_VERSION__ | ||||
| syn keyword	freebasicPredefined		__FB_WIN32__ __FB_X86__ __FB_XBOX__ | ||||
| syn keyword	freebasicPredefined		__FILE__ __FILE_NQ__ __FUNCTION__ __FUNCTION_NQ__ | ||||
| syn keyword	freebasicPredefined		__LINE__ __PATH__ __TIME__ | ||||
| " | ||||
| "	Preprocessor directives | ||||
| " | ||||
| syn match	freebasicInclude		"#\s*\%(inclib\|include\%(\s\+once\)\=\|libpath\)\>" | ||||
|  | ||||
| syn match	freebasicPreProcessor		"#\s*assert\>" | ||||
| syn match	freebasicPreProcessor		"#\s*cmdline\>" | ||||
| syn match	freebasicPreProcessor		"#\s*\%(define\|undef\)\>" | ||||
| syn match	freebasicPreProcessor		"#\s*\%(if\|ifdef\|ifndef\|else\|elseif\|endif\)\>" | ||||
| syn match	freebasicPreProcessor		"#\s*\%(macro\|endmacro\)\>" | ||||
| syn match	freebasicPreProcessor		"#\s*error\>" | ||||
| syn match	freebasicPreProcessor		"#\s*lang\>" | ||||
| syn match	freebasicPreProcessor		"#\s*line\>" | ||||
| syn match	freebasicPreProcessor		"#\s*pragma\%(\s\+reserve\)\=\>" | ||||
| syn match	freebasicPreProcessor		"#\s*\%(print\|dynamic\|static\)\>" | ||||
| syn keyword	freebasicPreProcessor		DEFINED | ||||
|  | ||||
| syn keyword	freebasicString			LEN | ||||
| syn keyword	freebasicString			ASC | ||||
| " string.bi | ||||
| syn keyword	freebasicString			FORMAT | ||||
| syn keyword	freebasicString			VAL | ||||
| syn keyword	freebasicString			CVD CVI CVL CVS | ||||
| syn keyword	freebasicString			INSTR | ||||
| syn keyword	freebasicString			LSET RSET | ||||
|  | ||||
| if s:lang == "qb" | ||||
|   syn match	freebasicString			"\<string\$\ze\s*(" | ||||
|   syn match	freebasicString			"\<__wstring\ze\s*(" | ||||
|   syn match	freebasicString			"\<space\$" | ||||
|   syn keyword	freebasicString			__WSPACE | ||||
|   syn match	freebasicString			"\<chr\$" | ||||
|   syn keyword	freebasicString			__WCHR | ||||
|   syn keyword	freebasicString			__WBIN __WHEX __WOCT __WSTR | ||||
|   syn match	freebasicString			"\<\%(bin\|hex\|oct\|str\)\$" | ||||
|   syn keyword	freebasicString			__VALLNG __VALINT __VALUINT __VALULNG | ||||
|   syn match	freebasicString			"\<\%(mkd\|mki\|mkl\|mks\)\$" | ||||
|   syn keyword	freebasicString			__MKLONGINT __MKSHORT | ||||
|   syn keyword	freebasicString			__CVLONGINT __CVSHORT | ||||
|   syn match	freebasicString			"\<\%(left\|mid\|right\|lcase\|ucase\|ltrim\|rtrim\)\$" | ||||
|   syn keyword	freebasicString			__TRIM | ||||
|   syn keyword	freebasicString			__INSTRREV | ||||
| else | ||||
|   syn match	freebasicString			"\<string\$\=\ze\s*(" | ||||
|   syn match	freebasicString			"\<wstring\ze\s*(" | ||||
|   syn match	freebasicString			"\<space\>\$\=" | ||||
|   syn keyword	freebasicString			WSPACE | ||||
|   syn match	freebasicString			"\<chr\>\$\=" | ||||
|   syn keyword	freebasicString			WCHR | ||||
|   syn keyword	freebasicString			WBIN WHEX WOCT WSTR | ||||
|   syn match	freebasicString			"\<\%(bin\|hex\|oct\|str\)\>\$\=" | ||||
|   syn keyword	freebasicString			VALLNG VALINT VALUINT VALULNG | ||||
|   syn match	freebasicString			"\<\%(mkd\|mki\|mkl\|mks\)\>\$\=" | ||||
|   syn match	freebasicString			"\<\%(mklongint\|mkshort\)\>\$\=" | ||||
|   syn keyword	freebasicString			CVLONGINT CVSHORT | ||||
|   syn match	freebasicString			"\<\%(left\|mid\|right\|lcase\|ucase\|ltrim\|rtrim\)\>\$\=" | ||||
|   syn match	freebasicString			"\<trim\>\$\=" | ||||
|   syn keyword	freebasicString			INSTRREV | ||||
| endif | ||||
|  | ||||
| syn keyword	freebasicTypeCasting		CDBL CINT CLNG CSNG | ||||
| if s:lang == "qb" | ||||
|   syn keyword	freebasicTypeCasting		__CAST __CBOOL __CBYTE __CLNGINT __CPTR __CSHORT __CSIGN __CYBTE __CUINT __CULNG | ||||
|   syn keyword	freebasicTypeCasting		__CULNGINT __CUNSG __CUSHORT | ||||
| else | ||||
|   syn keyword	freebasicTypeCasting		CAST CBOOL CBYTE CLNGINT CPTR CSHORT CSIGN CUBYTE CUINT CULNG CULNGINT CUNSG CUSHORT | ||||
| endif | ||||
|  | ||||
| syn match	freebasicUserInput		"\<line\s\+input\>" | ||||
| syn keyword	freebasicUserInput		INKEY INPUT | ||||
| if s:lang == "qb" | ||||
|   syn keyword	freebasicUserInput		__GETJOYSTICK __GETKEY __GETMOUSE __MULTIKEY __SETMOUSE STICK STRIG | ||||
| else | ||||
|   syn keyword	freebasicUserInput		GETJOYSTICK GETKEY GETMOUSE MULTIKEY SETMOUSE | ||||
| endif | ||||
| " | ||||
| "	Operators | ||||
| " | ||||
| " TODO: make these context sensitive to remove the overlap of common operators | ||||
| "     : alpha operators should probably always be highlighted | ||||
| "     -- DJK 20/11/19 | ||||
| if s:lang == "qb" | ||||
|   syn match	freebasicArithmeticOperator	"\<\%(MOD\|__SHL\|__SHR\)\>" | ||||
| else | ||||
|   syn match	freebasicArithmeticOperator	"\<\%(MOD\|SHL\|SHR\)\>" | ||||
| endif | ||||
| syn match	freebasicBitwiseOperator	"\<\%(AND\|EQV\|IMP\|NOT\|OR\|XOR\)\>" " freebaseLogical? | ||||
| if s:lang == "qb" | ||||
|   syn match	freebasicAssignmentOperator	"\<\%(MOD\|AND\|EQV\|IMP\|OR\|XOR\|__SHL\|__SHR\)=\@=" " exclude trailing '=' | ||||
| else | ||||
|   syn match	freebasicAssignmentOperator	"\<\%(MOD\|AND\|EQV\|IMP\|OR\|XOR\|SHL\|SHR\)=\@=" | ||||
| endif | ||||
| syn match	freebasicShortcircuitOperator	"\<\%(ANDALSO\|ORELSE\)\>" | ||||
| if s:lang == "fb" | ||||
|   syn match	freebasicMemoryOperator		'\<\%(new\|delete\)\>' | ||||
| endif | ||||
| syn keyword	freebasicPointerOperator	STRPTR VARPTR | ||||
| if s:lang == "qb" | ||||
|   syn keyword	freebasicPointerOperator	__PROCPTR | ||||
| else | ||||
|   syn keyword	freebasicPointerOperator	PROCPTR | ||||
| endif | ||||
| syn match	freebasicTypeOperator		'\<is\>' | ||||
| syn match	freebasicTypeOperator		'\.' nextgroup=freebasicIdentifier skipwhite | ||||
| if s:lang == "fb" | ||||
|   syn match	freebasicTypeOperator		'->' nextgroup=freebasicIdentifier skipwhite | ||||
| endif | ||||
|  | ||||
| if exists("freebasic_operators") | ||||
|   syn match	freebasicAssignmentOperator	"=>\=\|[-+&/\\*^]=" | ||||
|   if s:lang == "qb" | ||||
|     syn match	freebasicAssignmentOperator	"\<\%(MOD\|AND\|EQV\|IMP\|OR\|XOR\|__SHL\|__SHR\)=" " include trailing '=' | ||||
|   else | ||||
|     syn match	freebasicAssignmentOperator	"\<\%(MOD\|AND\|EQV\|IMP\|OR\|XOR\|SHL\|SHR\)=" | ||||
|   endif | ||||
|   syn match	freebasicArithmeticOperator	"[-+&/\\*^]" | ||||
|   " syn match	freebasicIndexingOperator	"[[\]()]" " FIXME | ||||
|   syn match	freebasicRelationalOperator	"=\|<>\|<=\|<\|>=\|>" | ||||
|   syn match	freebasicPreprocessorOperator	'\%(^\s*\)\@<!\%(##\|#\)\|[$!]"\@=' | ||||
|   syn match	freebasicPointerOperator	'[@*]' | ||||
|   syn match	freebasicTypeOperator		'\.' nextgroup=freebasicIdentifier skipwhite | ||||
|   if s:lang == "fb" | ||||
|     syn match	freebasicTypeOperator		'->' nextgroup=freebasicIdentifier skipwhite | ||||
|   endif | ||||
| endif | ||||
|  | ||||
| syn cluster	freebasicOperator		contains=freebasic.*Operator | ||||
| " | ||||
| "	Catch errors caused by wrong parenthesis | ||||
| " | ||||
| syn region	freebasicParen		transparent start='(' end=')' contains=ALLBUT,@freebasicParenGroup | ||||
| syn match	freebasicParenError	")" | ||||
| syn match	freebasicInParen	contained "[{}]" | ||||
| syn cluster	freebasicParenGroup	contains=freebasicParenError,freebasicSpecial,freebasicTodo,freebasicUserCont,freebasicUserLabel,freebasicBitField | ||||
| " syn region	freebasicParen		transparent start='(' end=')' contains=ALLBUT,@freebasicParenGroup | ||||
| " syn match	freebasicParenError	")" | ||||
| " syn match	freebasicInParen	contained "[{}]" | ||||
| " syn cluster	freebasicParenGroup	contains=freebasicParenError,freebasicSpecial,freebasicTodo,freebasicUserCont,freebasicUserLabel,freebasicBitField | ||||
| " | ||||
| "	Integer number, or floating point number without a dot and with "f". | ||||
| "	Integer number | ||||
| " | ||||
| syn region	freebasicHex			start="&h" end="\W" | ||||
| syn region	freebasicHexError		start="&h\x*[g-zG-Z]" end="\W" | ||||
| syn region	freebasicOctal			start="&o" end="\W" | ||||
| syn region	freebasicOctalError		start="&o[0-7]*[89a-zA-Z]" end="\W" | ||||
| syn region	freebasicBinary			start="&b" end="\W" | ||||
| syn region	freebasicBinaryError	start="&b[01]*[2-9a-zA-Z]" end="\W" | ||||
| syn match	freebasicInteger		"\<\d\+\(u\=l\=\|lu\|f\)\>" | ||||
| syn match	freebasicHexError	"&h\w*\>" | ||||
| syn match	freebasicOctalError	"&o\w*\>" | ||||
| syn match	freebasicBinaryError	"&b\w*\>" | ||||
| syn match	freebasicHex		"&h\x\+\%([%L&U]\|UL\|LL\|ULL\)\=\>" | ||||
| syn match	freebasicOctal		"&o\o\+\%([%L&U]\|UL\|LL\|ULL\)\=\>" | ||||
| syn match	freebasicBinary		"&b[10]\+\%([%L&U]\|UL\|LL\|ULL\)\=\>" | ||||
| syn match	freebasicInteger	"\<\d\+\%([%L&U]\|UL\|LL\|ULL\)\=\>" | ||||
| " | ||||
| "	Floating point number, with dot, optional exponent | ||||
| "	Floating point | ||||
| "	See: https://www.freebasic.net/forum/viewtopic.php?t=20323 | ||||
| " | ||||
| syn match	freebasicFloat		"\<\d\+\.\d*\(e[-+]\=\d\+\)\=[fl]\=\>" | ||||
| "	Floating point number, with dot, optional exponent, optional suffix | ||||
| " | ||||
| "	Floating point number, starting with a dot, optional exponent | ||||
| syn match	freebasicFloat		"\<\d\+\.\d*\%([de][-+]\=\d*\)\=[f!#]\=" | ||||
| " | ||||
| syn match	freebasicFloat		"\.\d\+\(e[-+]\=\d\+\)\=[fl]\=\>" | ||||
| "	Floating point number, starting with a dot, optional exponent, optional suffix | ||||
| " | ||||
| "	Floating point number, without dot, with exponent | ||||
| syn match	freebasicFloat		"\.\d\+\%([de][-+]\=\d*\)\=[f!#]\=" | ||||
| " | ||||
| syn match	freebasicFloat		"\<\d\+e[-+]\=\d\+[fl]\=\>" | ||||
| "	Floating point number, without dot, with optional exponent, optional suffix | ||||
| " | ||||
| "	Octal number | ||||
| syn match	freebasicFloat		"\<\d\+\%([de][-+]\=\d*\)[f!#]\=" | ||||
| " | ||||
| syn case match | ||||
| syn match	freebasicOctal2			"\<0\o*\>" | ||||
| syn match	freebasicOctal2Error	"\<0\o*[89a-zA-Z]" | ||||
| "	Floating point number, without dot, without exponent, with suffix | ||||
| " | ||||
| "	String and Character contstants | ||||
| " | ||||
| syn region	freebasicString		start='"' end='"' contains=freebasicSpecial,freebasicTodo | ||||
| syn region	freebasicString		start="'" end="'" contains=freebasicSpecial,freebasicTodo | ||||
| " | ||||
| "	Comments | ||||
| " | ||||
| syn match	freebasicSpecial	contained "\\\\." | ||||
| syn region	freebasicComment	start="^rem" end="$" contains=freebasicSpecial,freebasicTodo | ||||
| syn region	freebasicComment	start=":\s*rem" end="$" contains=freebasicSpecial,freebasicTodo | ||||
| syn region	freebasicComment	start="\s*'" end="$" contains=freebasicSpecial,freebasicTodo | ||||
| syn region	freebasicComment	start="^'" end="$" contains=freebasicSpecial,freebasicTodo | ||||
| " | ||||
| "	Now do the comments and labels | ||||
| " | ||||
| syn match	freebasicLabel		"^\d" | ||||
| syn match	freebasicLabel		"\<^\w+:\>" | ||||
| syn region	freebasicLineNumber	start="^\d" end="\s" | ||||
| syn match	freebasicFloat		"\<\d\+[f!#]" | ||||
| " | ||||
| "	Create the clusters | ||||
| " | ||||
| syn cluster	freebasicNumber		contains=freebasicHex,freebasicOctal,freebasicOctal2,freebasicBinary,freebasicInteger,freebasicFloat | ||||
| syn cluster	freebasicError		contains=freebasicHexError,freebasicOctalError,freebasicOctal2,freebasicBinary | ||||
| syn cluster	freebasicNumber		contains=freebasicHex,freebasicOctal,freebasicBinary,freebasicInteger,freebasicFloat | ||||
| syn cluster	freebasicNumberError	contains=freebasicHexError,freebasicOctalError,freebasicBinaryError | ||||
| " | ||||
| "	Used with OPEN statement | ||||
| "	Booleans | ||||
| " | ||||
| syn match	freebasicFilenumber		"#\d\+" | ||||
| syn match	freebasicMathOperator	"[\+\-\=\|\*\/\>\<\%\()[\]]" contains=freebasicParen | ||||
| if s:lang != "qb" | ||||
|   syn keyword	freebasicBoolean	TRUE FALSE | ||||
| endif | ||||
| " | ||||
| " | ||||
| "	String and escape sequences | ||||
| " | ||||
| syn match	freebasicSpecial	contained "\\." | ||||
| syn match	freebasicSpecial	contained "\\\d\{1,3}" | ||||
| syn match	freebasicSpecial	contained "\\&h\x\{1,2}" | ||||
| syn match	freebasicSpecial	contained "\\&o\o\{1,3}" | ||||
| syn match	freebasicSpecial	contained "\\&b[01]\{1,8}" | ||||
| syn match	freebasicSpecial	contained "\\u\x\{1,4}" | ||||
| syn region	freebasicString		start='"'     end='"' " TODO: Toggle contains on Option Escape in fblite and qb? -- DJK 20/11/19 | ||||
| syn region	freebasicString		start='!\zs"' end='"' contains=freebasicSpecial | ||||
| syn region	freebasicString		start='$\zs"' end='"' | ||||
| " | ||||
| "	Line labels | ||||
| " | ||||
| if s:lang =~# '\<\%(qb\|fblite\)\>' | ||||
|   syn match	freebasicLineLabel	"^\s*\zs\h\%(\w\|\.\)*\ze\s*:" | ||||
| else | ||||
|   syn match	freebasicLineLabel	"^\s*\zs\h\w*\ze\s*:" | ||||
| endif | ||||
| syn match	freebasicLineNumber	"^\s*\zs\d\+" | ||||
| " | ||||
| "	Line continuations | ||||
| " | ||||
| " syn match	freebasicLineContinuation	"\<_\>"	nextgroup=freebasicComment,freebasicPostLineContinuation skipwhite | ||||
| syn keyword	freebasicLineContinuation	_	nextgroup=freebasicComment,freebasicPostLineContinuation skipwhite | ||||
| syn match	freebasicPostLineContinuation	".*"	contained | ||||
| " | ||||
| " | ||||
| " Type suffixes | ||||
| if exists("freebasic_type_suffixes") && s:lang =~# '\<\%(qb\|fblite\)\>' | ||||
|   syn match freebasicTypeSuffix "\h\%(\w\|.\)*\zs[$%&!#]" | ||||
| endif | ||||
| " | ||||
| "	Comments | ||||
| " | ||||
| syn keyword	freebasicTodo			TODO FIXME XXX NOTE      contained | ||||
| syn region	freebasicComment		start="\<rem\>" end="$"  contains=freebasicTodo,@Spell,freebasicMetacommand | ||||
| syn region	freebasicComment		start="'"	end="$"  contains=freebasicTodo,@Spell,freebasicMetacommand | ||||
| syn region	freebasicDoubleComment		start="''"	end="$"  contains=freebasicTodo,@Spell | ||||
|  | ||||
| if !exists("freebasic_no_comment_fold") | ||||
|   syn region	freebasicMultilineComment	start="/'"	end="'/" contains=freebasicTodo,@Spell,freeBasicMultilineComment fold keepend extend | ||||
|   syn region	freebasicMultilineComment2	start="^\s*'.*\n\%(\s*'\)\@=" end="^\s*'.*\n\%(\s*'\)\@!" contains=freebasicComment,freebasicDoubleComment keepend fold | ||||
| else | ||||
|   syn region	freebasicMultilineComment	start="/'"	end="'/" contains=freebasicTodo,@Spell,freeBasicMultilineComment | ||||
| endif | ||||
|  | ||||
| syn case match | ||||
|  | ||||
| syn sync linebreaks=1 | ||||
|  | ||||
| " | ||||
| "	The default methods for highlighting.  Can be overridden later | ||||
| " | ||||
| hi def link freebasicArrays		StorageClass | ||||
| hi def link freebasicAsm		Special | ||||
| hi def link freebasicBitManipulation	Operator | ||||
| hi def link freebasicCompilerSwitches	PreCondit | ||||
| hi def link freebasicBoolean		Boolean | ||||
| if s:lang == "fb" | ||||
|   hi def link freebasicCompilerSwitches	freebasicUnsupportedError | ||||
| else | ||||
|   hi def link freebasicCompilerSwitches	PreCondit | ||||
| endif | ||||
| hi def link freebasicConsole		Special | ||||
| hi def link freebasicData		Special | ||||
| hi def link freebasicDataTypes		Type | ||||
| hi def link freebasicDateTime		Type | ||||
| hi def link freebasicDebug		Special | ||||
| hi def link freebasicErrorHandling	Special | ||||
| hi def link freebasicFilenumber		Special | ||||
| hi def link freebasicFiles		Special | ||||
| hi def link freebasicFunctions		Function | ||||
| hi def link freebasicGraphics		Function | ||||
| hi def link freebasicHardware		Special | ||||
| hi def link freebasicLogical		Conditional | ||||
| hi def link freebasicLoops		Repeat | ||||
| hi def link freebasicMath		Function | ||||
| if s:lang == "fb" | ||||
|   hi def link freebasicMetacommand	freebasicUnsupportedError | ||||
| else | ||||
|   hi def link freebasicMetacommand	SpecialComment | ||||
| endif | ||||
| hi def link freebasicMemory		Function | ||||
| hi def link freebasicMisc		Special | ||||
| hi def link freebasicModularizing	Special | ||||
| @@ -240,18 +620,55 @@ hi def link freebasicString		String | ||||
| hi def link freebasicTypeCasting	Type | ||||
| hi def link freebasicUserInput		Statement | ||||
| hi def link freebasicComment		Comment | ||||
| hi def link freebasicDoubleComment	Comment | ||||
| hi def link freebasicMultilineComment	Comment | ||||
| hi def link freebasicConditional	Conditional | ||||
| hi def link freebasicError		Error | ||||
| hi def link freebasicIdentifier		Identifier | ||||
| hi def link freebasicInclude		Include | ||||
| hi def link freebasicGenericFunction	Function | ||||
| hi def link freebasicLabel		Label | ||||
| hi def link freebasicLineNumber		Label | ||||
| hi def link freebasicLineContinuation	Special | ||||
| hi def link freebasicLineLabel		LineNr | ||||
| if s:lang == "fb" | ||||
|   hi def link freebasicLineNumber	freebasicUnsupportedError | ||||
| else | ||||
|   hi def link freebasicLineNumber	LineNr | ||||
| endif | ||||
| hi def link freebasicMathOperator	Operator | ||||
| hi def link freebasicNumber		Number | ||||
|  | ||||
| hi def link freebasicHex		Number | ||||
| hi def link freebasicOctal		Number | ||||
| hi def link freebasicBinary		Number | ||||
| hi def link freebasicInteger		Number | ||||
| hi def link freebasicFloat		Float | ||||
|  | ||||
| hi def link freebasicHexError		Error | ||||
| hi def link freebasicOctalError		Error | ||||
| hi def link freebasicBinaryError	Error | ||||
|  | ||||
| hi def link freebasicAssignmentOperator		Operator | ||||
| hi def link freebasicArithmeticOperator		Operator | ||||
| hi def link freebasicIndexingOperator		Operator | ||||
| hi def link freebasicRelationalOperator		Operator | ||||
| hi def link freebasicBitwiseOperator		Operator | ||||
| hi def link freebasicShortcircuitOperator	Operator | ||||
| hi def link freebasicPreprocessorOperator	Operator | ||||
| hi def link freebasicPointerOperator		Operator | ||||
| if exists("freebasic_operators") | ||||
|   hi def link freebasicTypeOperator		Operator | ||||
| endif | ||||
| hi def link freebasicMemoryOperator		Operator | ||||
|  | ||||
| hi def link freebasicSpaceError			Error | ||||
|  | ||||
| hi def link freebasicSpecial		Special | ||||
| hi def link freebasicTodo		Todo | ||||
|  | ||||
| hi def link freebasicUnsupported	freebasicUnsupportedError | ||||
| hi def link freebasicUnsupportedError	Error | ||||
|  | ||||
| unlet s:lang | ||||
|  | ||||
| let b:current_syntax = "freebasic" | ||||
|  | ||||
| " vim: ts=8 | ||||
| " vim: ts=8 tw=132 fdm=marker | ||||
|   | ||||
		Reference in New Issue
	
	Block a user