diff options
Diffstat (limited to 'runtime/syntax/icon.vim')
-rw-r--r-- | runtime/syntax/icon.vim | 211 |
1 files changed, 211 insertions, 0 deletions
diff --git a/runtime/syntax/icon.vim b/runtime/syntax/icon.vim new file mode 100644 index 0000000..276bb58 --- /dev/null +++ b/runtime/syntax/icon.vim @@ -0,0 +1,211 @@ +" Vim syntax file +" Language: Icon +" Maintainer: Doug Kearns <dougkearns@gmail.com> +" Previous Maintainer: Wendell Turner <wendell@adsi-m4.com> (invalid last known address) +" Last Change: 2022 Jun 16 +" Contributor: eschen@alumni.princeton.edu 2002.09.18 + +" Prelude {{{1 +if exists("b:current_syntax") + finish +endif + +syn iskeyword @,48-57,_,192-255,& + +" Not Top {{{1 +syn cluster iconNotTop contains=iconDocField,iconIncluded,iconStringSpecial,iconTodo,@Spell + +" Whitespace errors {{{1 +if exists("icon_space_errors") + if !exists("icon_no_trail_space_error") + syn match iconSpaceError "\s\+$" display excludenl + endif + if !exists("icon_no_tab_space_error") + syn match iconSpaceError " \+\t"me=e-1 display + endif +endif + +" Reserved words {{{1 +syn keyword iconReserved break by case create default do else every fail if +syn keyword iconReserved initial next not of repeat return suspend then to +syn keyword iconReserved until while + +syn keyword iconStorageClass global static local record invocable + +syn keyword iconLink link + +" Procedure definitions {{{1 +if exists("icon_no_procedure_fold") + syn region iconProcedure matchgroup=iconReserved start="\<procedure\>" end="\<end\>" contains=ALLBUT,@iconNotTop +else + syn region iconProcedure matchgroup=iconReserved start="\<procedure\>" end="\<end\>" contains=ALLBUT,@iconNotTop fold +endif + +" Keywords {{{1 +syn keyword iconKeyword &allocated &ascii &clock &collections &cset ¤t +syn keyword iconKeyword &date &dateline &digits &dump &e &error &errornumber +syn keyword iconKeyword &errortext &errorvalue &errout &fail &features &file +syn keyword iconKeyword &host &input &lcase &letters &level &line &main &null +syn keyword iconKeyword &output &phi &pi &pos &progname &random ®ions +syn keyword iconKeyword &source &storage &subject &time &trace &ucase &version + +" Graphics keywords +syn keyword iconKeyword &col &control &interval &ldrag &lpress &lrelease +syn keyword iconKeyword &mdrag &meta &mpress &mrelease &rdrag &resize &row +syn keyword iconKeyword &rpress &rrelease &shift &window &x &y + +" Functions {{{1 +syn keyword iconFunction abs acos any args asin atan bal callout center char +syn keyword iconFunction chdir close collect copy cos cset delay delete detab +syn keyword iconFunction display dtor entab errorclear exit exp find flush +syn keyword iconFunction function get getch getche getenv iand icom image +syn keyword iconFunction insert integer ior ishift ixor kbhit key left list +syn keyword iconFunction loadfunc log many map match member move name numeric +syn keyword iconFunction open ord pop pos proc pull push put read reads real +syn keyword iconFunction remove rename repl reverse right rtod runerr save +syn keyword iconFunction seek self seq serial set sin sort sortf sqrt stop +syn keyword iconFunction string system tab table tan trim type upto variable +syn keyword iconFunction where write writes + +" Graphics functions +syn keyword iconFunction Active Alert Bg CenterString Clip Clone Color +syn keyword iconFunction ColorDialog ColorValue CopyArea Couple DrawArc +syn keyword iconFunction DrawCircle DrawCurve DrawImage DrawLine DrawPoint +syn keyword iconFunction DrawPolygon DrawRectangle DrawSegment DrawString +syn keyword iconFunction Enqueue EraseArea Event Fg FillArc FillCircle +syn keyword iconFunction FillPolygon FillRectangle Font FreeColor GotoRC +syn keyword iconFunction GotoXY LeftString Lower NewColor Notice OpenDialog +syn keyword iconFunction PaletteChars PaletteColor PaletteGrays PaletteKey +syn keyword iconFunction Pattern Pending Pixel Raise ReadImage RightString +syn keyword iconFunction SaveDialog SelectDialog Shade TextDialog TextWidth +syn keyword iconFunction ToggleDialog Uncouple WAttrib WClose WDefault WDelay +syn keyword iconFunction WDone WFlush WOpen WQuit WRead WReads WriteImage +syn keyword iconFunction WSync WWrite WWrites + +" String and character constants {{{1 +syn match iconStringSpecial "\\x\x\{2}\|\\\o\{3\}\|\\[bdeflnrtv\"\'\\]\|\\^[a-zA-Z0-9]" contained +syn match iconStringSpecial "\\$" contained +syn match iconStringSpecial "_\ze\s*$" contained + +syn region iconString start=+"+ skip=+\\\\\|\\"+ end=+"+ contains=iconStringSpecial +syn region iconCset start=+'+ skip=+\\\\\|\\'+ end=+'+ contains=iconStringSpecial + +" Bracket errors {{{1 + +if !exists("icon_no_bracket_errors") + " catch errors caused by wrong brackets (ACE 2002.09.18) + syn cluster iconBracketGroup contains=iconBracketError,iconIncluded + syn region iconBracket start='\[' end='\]' contains=ALLBUT,@iconBracketGroup,@iconNotTop transparent + syn match iconBracketError "]" + + "catch errors caused by wrong braces (ACE 2002.09.18) + syn cluster iconBraceGroup contains=iconBraceError,iconIncluded + syn region iconBrace start='{' end='}' contains=ALLBUT,@iconBraceGroup,@iconNotTop transparent + syn match iconBraceError "}" + + "catch errors caused by wrong parenthesis + syn cluster iconParenGroup contains=iconParenError,iconIncluded + syn region iconParen start='(' end=')' contains=ALLBUT,@iconParenGroup,@iconNotTop transparent + syn match iconParenError ")" +end + +" Numbers {{{1 +syn case ignore + +" integer +syn match iconInteger "\<\d\+\>" +syn match iconInteger "\<\d\{1,2}[rR][a-zA-Z0-9]\+\>" + +" real with trailing dot +syn match iconReal "\<\d\+\." + +" real, with dot, optional exponent +syn match iconReal "\<\d\+\.\d*\%(e[-+]\=\d\+\)\=\>" + +" real, with leading dot, optional exponent +syn match iconReal "\.\d\+\%(e[-+]\=\d\+\)\=\>" + +" real, without dot, with exponent +syn match iconReal "\<\d\+e[-+]\=\d\+\>" + +syn cluster iconNumber contains=iconInteger,iconReal + +syn case match + +" Comments {{{1 +syn keyword iconTodo TODO FIXME XXX BUG contained +syn match iconComment "#.*" contains=iconTodo,iconSpaceError,@Spell +syn match iconDocField "^#\s\+\zs\%(File\|Subject\|Authors\=\|Date\|Version\|Links\|Requires\|See also\):" contained + +if exists("icon_no_comment_fold") + syn region iconDocumentation start="\%^#\{2,}\%(\n#\+\%(\s\+.*\)\=\)\+" end="^#\+\n\s*$" contains=iconDocField keepend +else + syn region iconMultilineComment start="^\s*#.*\n\%(^\s*#\)\@=" end="^\s*#.*\n\%(^\s*#\)\@!" contains=iconComment keepend fold transparent + syn region iconDocumentation start="\%^#\{2,}\%(\n#\)\+" end="^#\+\n\%([^#]\|$\)" contains=iconDocField keepend fold +endif + +" Preprocessor {{{1 +syn match iconPreInclude '^\s*\zs$\s*include\>\ze\s*"' nextgroup=iconIncluded skipwhite +syn match iconIncluded '"[^"]\+"' contained + +syn region iconPreDefine start="^\s*\zs$\s*\%(define\|undef\)\>" end="$" oneline contains=ALLBUT,@iconPreGroup +syn region iconPreProc start="^\s*\zs$\s*\%(error\|line\)\>" end="$" oneline contains=ALLBUT,@iconPreGroup +syn region iconPreConditional start="^\s*\zs$\s*\%(if\|ifdef\|ifndef\|elif\|else\|endif\)\>" end="$" oneline contains=iconComment,iconString,iconCset,iconNumber,iconSpaceError + +syn cluster iconPreGroup contains=iconPreCondit,iconPreInclude,iconIncluded,iconPreDefine + +syn match iconPreSymbol "_V\d\+" +syn keyword iconPreSymbol _ACORN _AMIGA _ARM_FUNCTIONS _ASCII _CALLING +syn keyword iconPreSymbol _CO_EXPRESSIONS _COMPILED _DIRECT_EXECUTION +syn keyword iconPreSymbol _DOS_FUNCTIONS _EBCDIC _EVENT_MONITOR +syn keyword iconPreSymbol _EXECUTABLE_IMAGES _EXTERNAL_FUNCTIONS +syn keyword iconPreSymbol _EXTERNAL_VALUES _INTERPRETED _KEYBOARD_FUNCTIONS +syn keyword iconPreSymbol _LARGE_INTEGERS _MACINTOSH _MEMORY_MONITOR _MSDOS +syn keyword iconPreSymbol _MSDOS_386 _MULTIREGION _MULTITASKING _OS2 _PIPES +syn keyword iconPreSymbol _PORT _PRESENTATION_MGR _RECORD_IO _STRING_INVOKE +syn keyword iconPreSymbol _SYSTEM_FUNCTION _UNIX _VISUALIZATION _VMS +syn keyword iconPreSymbol _WINDOW_FUNCTIONS _X_WINDOW_SYSTEM + +" Syncing {{{1 +if !exists("icon_minlines") + let icon_minlines = 250 +endif +exec "syn sync ccomment iconComment minlines=" . icon_minlines + +" Default Highlighting {{{1 + +hi def link iconParenError iconError +hi def link iconBracketError iconError +hi def link iconBraceError iconError +hi def link iconSpaceError iconError +hi def link iconError Error + +hi def link iconInteger Number +hi def link iconReal Float +hi def link iconString String +hi def link iconCset String +hi def link iconStringSpecial SpecialChar + +hi def link iconPreProc PreProc +hi def link iconIncluded iconString +hi def link iconPreInclude Include +hi def link iconPreSymbol iconPreProc +hi def link iconPreDefine Define +hi def link iconPreConditional PreCondit + +hi def link iconStatement Statement +hi def link iconStorageClass StorageClass +hi def link iconFunction Function +hi def link iconReserved Label +hi def link iconLink Include +hi def link iconKeyword Keyword + +hi def link iconComment Comment +hi def link iconTodo Todo +hi def link iconDocField SpecialComment +hi def link iconDocumentation Comment + +" Postscript {{{1 +let b:current_syntax = "icon" + +" vim: nowrap sw=2 sts=2 ts=8 noet fdm=marker: |