Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 1 | " Vim syntax file |
| 2 | " Language: M$ Resource files (*.rc) |
Bram Moolenaar | f2571c6 | 2015-06-09 19:44:55 +0200 | [diff] [blame] | 3 | " Maintainer: Christian Brabandt |
| 4 | " Last Change: 2015-05-29 |
| 5 | " Repository: https://github.com/chrisbra/vim-rc-syntax |
| 6 | " License: Vim (see :h license) |
| 7 | " Previous Maintainer: Heiko Erhardt <Heiko.Erhardt@munich.netsurf.de> |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 8 | |
| 9 | " This file is based on the c.vim |
| 10 | |
Bram Moolenaar | 89bcfda | 2016-08-30 23:26:57 +0200 | [diff] [blame] | 11 | " quit when a syntax file was already loaded |
| 12 | if exists("b:current_syntax") |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 13 | finish |
| 14 | endif |
| 15 | |
| 16 | " Common RC keywords |
| 17 | syn keyword rcLanguage LANGUAGE |
| 18 | |
| 19 | syn keyword rcMainObject TEXTINCLUDE VERSIONINFO BITMAP ICON CURSOR CURSOR |
| 20 | syn keyword rcMainObject MENU ACCELERATORS TOOLBAR DIALOG |
| 21 | syn keyword rcMainObject STRINGTABLE MESSAGETABLE RCDATA DLGINIT DESIGNINFO |
| 22 | |
| 23 | syn keyword rcSubObject POPUP MENUITEM SEPARATOR |
Bram Moolenaar | f2571c6 | 2015-06-09 19:44:55 +0200 | [diff] [blame] | 24 | syn keyword rcSubObject CONTROL LTEXT CTEXT RTEXT EDITTEXT |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 25 | syn keyword rcSubObject BUTTON PUSHBUTTON DEFPUSHBUTTON GROUPBOX LISTBOX COMBOBOX |
| 26 | syn keyword rcSubObject FILEVERSION PRODUCTVERSION FILEFLAGSMASK FILEFLAGS FILEOS |
| 27 | syn keyword rcSubObject FILETYPE FILESUBTYPE |
| 28 | |
| 29 | syn keyword rcCaptionParam CAPTION |
| 30 | syn keyword rcParam CHARACTERISTICS CLASS STYLE EXSTYLE VERSION FONT |
| 31 | |
| 32 | syn keyword rcStatement BEGIN END BLOCK VALUE |
| 33 | |
| 34 | syn keyword rcCommonAttribute PRELOAD LOADONCALL FIXED MOVEABLE DISCARDABLE PURE IMPURE |
| 35 | |
| 36 | syn keyword rcAttribute WS_OVERLAPPED WS_POPUP WS_CHILD WS_MINIMIZE WS_VISIBLE WS_DISABLED WS_CLIPSIBLINGS |
| 37 | syn keyword rcAttribute WS_CLIPCHILDREN WS_MAXIMIZE WS_CAPTION WS_BORDER WS_DLGFRAME WS_VSCROLL WS_HSCROLL |
| 38 | syn keyword rcAttribute WS_SYSMENU WS_THICKFRAME WS_GROUP WS_TABSTOP WS_MINIMIZEBOX WS_MAXIMIZEBOX WS_TILED |
| 39 | syn keyword rcAttribute WS_ICONIC WS_SIZEBOX WS_TILEDWINDOW WS_OVERLAPPEDWINDOW WS_POPUPWINDOW WS_CHILDWINDOW |
| 40 | syn keyword rcAttribute WS_EX_DLGMODALFRAME WS_EX_NOPARENTNOTIFY WS_EX_TOPMOST WS_EX_ACCEPTFILES |
| 41 | syn keyword rcAttribute WS_EX_TRANSPARENT WS_EX_MDICHILD WS_EX_TOOLWINDOW WS_EX_WINDOWEDGE WS_EX_CLIENTEDGE |
| 42 | syn keyword rcAttribute WS_EX_CONTEXTHELP WS_EX_RIGHT WS_EX_LEFT WS_EX_RTLREADING WS_EX_LTRREADING |
| 43 | syn keyword rcAttribute WS_EX_LEFTSCROLLBAR WS_EX_RIGHTSCROLLBAR WS_EX_CONTROLPARENT WS_EX_STATICEDGE |
| 44 | syn keyword rcAttribute WS_EX_APPWINDOW WS_EX_OVERLAPPEDWINDOW WS_EX_PALETTEWINDOW |
| 45 | syn keyword rcAttribute ES_LEFT ES_CENTER ES_RIGHT ES_MULTILINE ES_UPPERCASE ES_LOWERCASE ES_PASSWORD |
| 46 | syn keyword rcAttribute ES_AUTOVSCROLL ES_AUTOHSCROLL ES_NOHIDESEL ES_OEMCONVERT ES_READONLY ES_WANTRETURN |
| 47 | syn keyword rcAttribute ES_NUMBER |
| 48 | syn keyword rcAttribute BS_PUSHBUTTON BS_DEFPUSHBUTTON BS_CHECKBOX BS_AUTOCHECKBOX BS_RADIOBUTTON BS_3STATE |
| 49 | syn keyword rcAttribute BS_AUTO3STATE BS_GROUPBOX BS_USERBUTTON BS_AUTORADIOBUTTON BS_OWNERDRAW BS_LEFTTEXT |
| 50 | syn keyword rcAttribute BS_TEXT BS_ICON BS_BITMAP BS_LEFT BS_RIGHT BS_CENTER BS_TOP BS_BOTTOM BS_VCENTER |
| 51 | syn keyword rcAttribute BS_PUSHLIKE BS_MULTILINE BS_NOTIFY BS_FLAT BS_RIGHTBUTTON |
| 52 | syn keyword rcAttribute SS_LEFT SS_CENTER SS_RIGHT SS_ICON SS_BLACKRECT SS_GRAYRECT SS_WHITERECT |
| 53 | syn keyword rcAttribute SS_BLACKFRAME SS_GRAYFRAME SS_WHITEFRAME SS_USERITEM SS_SIMPLE SS_LEFTNOWORDWRAP |
| 54 | syn keyword rcAttribute SS_OWNERDRAW SS_BITMAP SS_ENHMETAFILE SS_ETCHEDHORZ SS_ETCHEDVERT SS_ETCHEDFRAME |
| 55 | syn keyword rcAttribute SS_TYPEMASK SS_NOPREFIX SS_NOTIFY SS_CENTERIMAGE SS_RIGHTJUST SS_REALSIZEIMAGE |
| 56 | syn keyword rcAttribute SS_SUNKEN SS_ENDELLIPSIS SS_PATHELLIPSIS SS_WORDELLIPSIS SS_ELLIPSISMASK |
| 57 | syn keyword rcAttribute DS_ABSALIGN DS_SYSMODAL DS_LOCALEDIT DS_SETFONT DS_MODALFRAME DS_NOIDLEMSG |
| 58 | syn keyword rcAttribute DS_SETFOREGROUND DS_3DLOOK DS_FIXEDSYS DS_NOFAILCREATE DS_CONTROL DS_CENTER |
| 59 | syn keyword rcAttribute DS_CENTERMOUSE DS_CONTEXTHELP |
| 60 | syn keyword rcAttribute LBS_NOTIFY LBS_SORT LBS_NOREDRAW LBS_MULTIPLESEL LBS_OWNERDRAWFIXED |
| 61 | syn keyword rcAttribute LBS_OWNERDRAWVARIABLE LBS_HASSTRINGS LBS_USETABSTOPS LBS_NOINTEGRALHEIGHT |
| 62 | syn keyword rcAttribute LBS_MULTICOLUMN LBS_WANTKEYBOARDINPUT LBS_EXTENDEDSEL LBS_DISABLENOSCROLL |
| 63 | syn keyword rcAttribute LBS_NODATA LBS_NOSEL LBS_STANDARD |
| 64 | syn keyword rcAttribute CBS_SIMPLE CBS_DROPDOWN CBS_DROPDOWNLIST CBS_OWNERDRAWFIXED CBS_OWNERDRAWVARIABLE |
| 65 | syn keyword rcAttribute CBS_AUTOHSCROLL CBS_OEMCONVERT CBS_SORT CBS_HASSTRINGS CBS_NOINTEGRALHEIGHT |
| 66 | syn keyword rcAttribute CBS_DISABLENOSCROLL CBS_UPPERCASE CBS_LOWERCASE |
| 67 | syn keyword rcAttribute SBS_HORZ SBS_VERT SBS_TOPALIGN SBS_LEFTALIGN SBS_BOTTOMALIGN SBS_RIGHTALIGN |
| 68 | syn keyword rcAttribute SBS_SIZEBOXTOPLEFTALIGN SBS_SIZEBOXBOTTOMRIGHTALIGN SBS_SIZEBOX SBS_SIZEGRIP |
| 69 | syn keyword rcAttribute CCS_TOP CCS_NOMOVEY CCS_BOTTOM CCS_NORESIZE CCS_NOPARENTALIGN CCS_ADJUSTABLE |
| 70 | syn keyword rcAttribute CCS_NODIVIDER |
| 71 | syn keyword rcAttribute LVS_ICON LVS_REPORT LVS_SMALLICON LVS_LIST LVS_TYPEMASK LVS_SINGLESEL LVS_SHOWSELALWAYS |
| 72 | syn keyword rcAttribute LVS_SORTASCENDING LVS_SORTDESCENDING LVS_SHAREIMAGELISTS LVS_NOLABELWRAP |
| 73 | syn keyword rcAttribute LVS_EDITLABELS LVS_OWNERDATA LVS_NOSCROLL LVS_TYPESTYLEMASK LVS_ALIGNTOP LVS_ALIGNLEFT |
| 74 | syn keyword rcAttribute LVS_ALIGNMASK LVS_OWNERDRAWFIXED LVS_NOCOLUMNHEADER LVS_NOSORTHEADER LVS_AUTOARRANGE |
| 75 | syn keyword rcAttribute TVS_HASBUTTONS TVS_HASLINES TVS_LINESATROOT TVS_EDITLABELS TVS_DISABLEDRAGDROP |
| 76 | syn keyword rcAttribute TVS_SHOWSELALWAYS |
| 77 | syn keyword rcAttribute TCS_FORCEICONLEFT TCS_FORCELABELLEFT TCS_TABS TCS_BUTTONS TCS_SINGLELINE TCS_MULTILINE |
| 78 | syn keyword rcAttribute TCS_RIGHTJUSTIFY TCS_FIXEDWIDTH TCS_RAGGEDRIGHT TCS_FOCUSONBUTTONDOWN |
| 79 | syn keyword rcAttribute TCS_OWNERDRAWFIXED TCS_TOOLTIPS TCS_FOCUSNEVER |
| 80 | syn keyword rcAttribute ACS_CENTER ACS_TRANSPARENT ACS_AUTOPLAY |
| 81 | syn keyword rcStdId IDI_APPLICATION IDI_HAND IDI_QUESTION IDI_EXCLAMATION IDI_ASTERISK IDI_WINLOGO IDI_WINLOGO |
| 82 | syn keyword rcStdId IDI_WARNING IDI_ERROR IDI_INFORMATION |
| 83 | syn keyword rcStdId IDCANCEL IDABORT IDRETRY IDIGNORE IDYES IDNO IDCLOSE IDHELP IDC_STATIC |
| 84 | |
| 85 | " Common RC keywords |
| 86 | |
| 87 | " Common RC keywords |
| 88 | syn keyword rcTodo contained TODO FIXME XXX |
| 89 | |
| 90 | " String and Character constants |
| 91 | " Highlight special characters (those which have a backslash) differently |
| 92 | syn match rcSpecial contained "\\[0-7][0-7][0-7]\=\|\\." |
| 93 | syn region rcString start=+"+ skip=+\\\\\|\\"+ end=+"+ contains=rcSpecial |
| 94 | syn match rcCharacter "'[^\\]'" |
| 95 | syn match rcSpecialCharacter "'\\.'" |
| 96 | syn match rcSpecialCharacter "'\\[0-7][0-7]'" |
| 97 | syn match rcSpecialCharacter "'\\[0-7][0-7][0-7]'" |
| 98 | |
| 99 | "catch errors caused by wrong parenthesis |
| 100 | syn region rcParen transparent start='(' end=')' contains=ALLBUT,rcParenError,rcIncluded,rcSpecial,rcTodo |
| 101 | syn match rcParenError ")" |
| 102 | syn match rcInParen contained "[{}]" |
| 103 | |
| 104 | "integer number, or floating point number without a dot and with "f". |
| 105 | syn case ignore |
| 106 | syn match rcNumber "\<\d\+\(u\=l\=\|lu\|f\)\>" |
| 107 | "floating point number, with dot, optional exponent |
| 108 | syn match rcFloat "\<\d\+\.\d*\(e[-+]\=\d\+\)\=[fl]\=\>" |
| 109 | "floating point number, starting with a dot, optional exponent |
| 110 | syn match rcFloat "\.\d\+\(e[-+]\=\d\+\)\=[fl]\=\>" |
| 111 | "floating point number, without dot, with exponent |
| 112 | syn match rcFloat "\<\d\+e[-+]\=\d\+[fl]\=\>" |
| 113 | "hex number |
| 114 | syn match rcNumber "\<0x[0-9a-f]\+\(u\=l\=\|lu\)\>" |
| 115 | "syn match rcIdentifier "\<[a-z_][a-z0-9_]*\>" |
| 116 | syn case match |
| 117 | " flag an octal number with wrong digits |
| 118 | syn match rcOctalError "\<0[0-7]*[89]" |
| 119 | |
| 120 | if exists("rc_comment_strings") |
| 121 | " A comment can contain rcString, rcCharacter and rcNumber. |
| 122 | " But a "*/" inside a rcString in a rcComment DOES end the comment! So we |
| 123 | " need to use a special type of rcString: rcCommentString, which also ends on |
| 124 | " "*/", and sees a "*" at the start of the line as comment again. |
| 125 | " Unfortunately this doesn't very well work for // type of comments :-( |
| 126 | syntax match rcCommentSkip contained "^\s*\*\($\|\s\+\)" |
| 127 | syntax region rcCommentString contained start=+"+ skip=+\\\\\|\\"+ end=+"+ end=+\*/+me=s-1 contains=rcSpecial,rcCommentSkip |
| 128 | syntax region rcComment2String contained start=+"+ skip=+\\\\\|\\"+ end=+"+ end="$" contains=rcSpecial |
| 129 | syntax region rcComment start="/\*" end="\*/" contains=rcTodo,rcCommentString,rcCharacter,rcNumber,rcFloat |
| 130 | syntax match rcComment "//.*" contains=rcTodo,rcComment2String,rcCharacter,rcNumber |
| 131 | else |
| 132 | syn region rcComment start="/\*" end="\*/" contains=rcTodo |
| 133 | syn match rcComment "//.*" contains=rcTodo |
| 134 | endif |
| 135 | syntax match rcCommentError "\*/" |
| 136 | |
| 137 | syn region rcPreCondit start="^\s*#\s*\(if\>\|ifdef\>\|ifndef\>\|elif\>\|else\>\|endif\>\)" skip="\\$" end="$" contains=rcComment,rcString,rcCharacter,rcNumber,rcCommentError |
| 138 | syn region rcIncluded contained start=+"+ skip=+\\\\\|\\"+ end=+"+ |
| 139 | syn match rcIncluded contained "<[^>]*>" |
| 140 | syn match rcInclude "^\s*#\s*include\>\s*["<]" contains=rcIncluded |
| 141 | "syn match rcLineSkip "\\$" |
| 142 | syn region rcDefine start="^\s*#\s*\(define\>\|undef\>\)" skip="\\$" end="$" contains=ALLBUT,rcPreCondit,rcIncluded,rcInclude,rcDefine,rcInParen |
| 143 | syn region rcPreProc start="^\s*#\s*\(pragma\>\|line\>\|warning\>\|warn\>\|error\>\)" skip="\\$" end="$" contains=ALLBUT,rcPreCondit,rcIncluded,rcInclude,rcDefine,rcInParen |
| 144 | |
| 145 | syn sync ccomment rcComment minlines=10 |
| 146 | |
| 147 | " Define the default highlighting. |
Bram Moolenaar | 89bcfda | 2016-08-30 23:26:57 +0200 | [diff] [blame] | 148 | " Only when an item doesn't have highlighting yet |
| 149 | command -nargs=+ HiLink hi def link <args> |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 150 | |
Bram Moolenaar | 89bcfda | 2016-08-30 23:26:57 +0200 | [diff] [blame] | 151 | HiLink rcCharacter Character |
| 152 | HiLink rcSpecialCharacter rcSpecial |
| 153 | HiLink rcNumber Number |
| 154 | HiLink rcFloat Float |
| 155 | HiLink rcOctalError rcError |
| 156 | HiLink rcParenError rcError |
| 157 | HiLink rcInParen rcError |
| 158 | HiLink rcCommentError rcError |
| 159 | HiLink rcInclude Include |
| 160 | HiLink rcPreProc PreProc |
| 161 | HiLink rcDefine Macro |
| 162 | HiLink rcIncluded rcString |
| 163 | HiLink rcError Error |
| 164 | HiLink rcPreCondit PreCondit |
| 165 | HiLink rcCommentString rcString |
| 166 | HiLink rcComment2String rcString |
| 167 | HiLink rcCommentSkip rcComment |
| 168 | HiLink rcString String |
| 169 | HiLink rcComment Comment |
| 170 | HiLink rcSpecial SpecialChar |
| 171 | HiLink rcTodo Todo |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 172 | |
Bram Moolenaar | 89bcfda | 2016-08-30 23:26:57 +0200 | [diff] [blame] | 173 | HiLink rcAttribute rcCommonAttribute |
| 174 | HiLink rcStdId rcStatement |
| 175 | HiLink rcStatement Statement |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 176 | |
Bram Moolenaar | 89bcfda | 2016-08-30 23:26:57 +0200 | [diff] [blame] | 177 | " Default color overrides |
| 178 | hi def rcLanguage term=reverse ctermbg=Red ctermfg=Yellow guibg=Red guifg=Yellow |
| 179 | hi def rcMainObject term=underline ctermfg=Blue guifg=Blue |
| 180 | hi def rcSubObject ctermfg=Green guifg=Green |
| 181 | hi def rcCaptionParam term=underline ctermfg=DarkGreen guifg=Green |
| 182 | hi def rcParam ctermfg=DarkGreen guifg=DarkGreen |
| 183 | hi def rcStatement ctermfg=DarkGreen guifg=DarkGreen |
| 184 | hi def rcCommonAttribute ctermfg=Brown guifg=Brown |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 185 | |
Bram Moolenaar | 89bcfda | 2016-08-30 23:26:57 +0200 | [diff] [blame] | 186 | "HiLink rcIdentifier Identifier |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 187 | |
Bram Moolenaar | 89bcfda | 2016-08-30 23:26:57 +0200 | [diff] [blame] | 188 | delcommand HiLink |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 189 | |
| 190 | let b:current_syntax = "rc" |
| 191 | |
| 192 | " vim: ts=8 |