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