xref: /vim-8.2.3635/runtime/syntax/rc.vim (revision f37506f6)
1071d4279SBram Moolenaar" Vim syntax file
2071d4279SBram Moolenaar" Language:	M$ Resource files (*.rc)
3f2571c61SBram Moolenaar" Maintainer:	Christian Brabandt
4f2571c61SBram Moolenaar" Last Change:	2015-05-29
5f2571c61SBram Moolenaar" Repository:   https://github.com/chrisbra/vim-rc-syntax
6f2571c61SBram Moolenaar" License:	Vim (see :h license)
7f2571c61SBram Moolenaar" Previous Maintainer:	Heiko Erhardt <[email protected]>
8071d4279SBram Moolenaar
9071d4279SBram Moolenaar" This file is based on the c.vim
10071d4279SBram Moolenaar
1189bcfda6SBram Moolenaar" quit when a syntax file was already loaded
1289bcfda6SBram Moolenaarif exists("b:current_syntax")
13071d4279SBram Moolenaar  finish
14071d4279SBram Moolenaarendif
15071d4279SBram Moolenaar
16071d4279SBram Moolenaar" Common RC keywords
17071d4279SBram Moolenaarsyn keyword rcLanguage LANGUAGE
18071d4279SBram Moolenaar
19071d4279SBram Moolenaarsyn keyword rcMainObject TEXTINCLUDE VERSIONINFO BITMAP ICON CURSOR CURSOR
20071d4279SBram Moolenaarsyn keyword rcMainObject MENU ACCELERATORS TOOLBAR DIALOG
21071d4279SBram Moolenaarsyn keyword rcMainObject STRINGTABLE MESSAGETABLE RCDATA DLGINIT DESIGNINFO
22071d4279SBram Moolenaar
23071d4279SBram Moolenaarsyn keyword rcSubObject POPUP MENUITEM SEPARATOR
24f2571c61SBram Moolenaarsyn keyword rcSubObject CONTROL LTEXT CTEXT RTEXT EDITTEXT
25071d4279SBram Moolenaarsyn keyword rcSubObject BUTTON PUSHBUTTON DEFPUSHBUTTON GROUPBOX LISTBOX COMBOBOX
26071d4279SBram Moolenaarsyn keyword rcSubObject FILEVERSION PRODUCTVERSION FILEFLAGSMASK FILEFLAGS FILEOS
27071d4279SBram Moolenaarsyn keyword rcSubObject FILETYPE FILESUBTYPE
28071d4279SBram Moolenaar
29071d4279SBram Moolenaarsyn keyword rcCaptionParam CAPTION
30071d4279SBram Moolenaarsyn keyword rcParam CHARACTERISTICS CLASS STYLE EXSTYLE VERSION FONT
31071d4279SBram Moolenaar
32071d4279SBram Moolenaarsyn keyword rcStatement BEGIN END BLOCK VALUE
33071d4279SBram Moolenaar
34071d4279SBram Moolenaarsyn keyword rcCommonAttribute PRELOAD LOADONCALL FIXED MOVEABLE DISCARDABLE PURE IMPURE
35071d4279SBram Moolenaar
36071d4279SBram Moolenaarsyn keyword rcAttribute WS_OVERLAPPED WS_POPUP WS_CHILD WS_MINIMIZE WS_VISIBLE WS_DISABLED WS_CLIPSIBLINGS
37071d4279SBram Moolenaarsyn keyword rcAttribute WS_CLIPCHILDREN WS_MAXIMIZE WS_CAPTION WS_BORDER WS_DLGFRAME WS_VSCROLL WS_HSCROLL
38071d4279SBram Moolenaarsyn keyword rcAttribute WS_SYSMENU WS_THICKFRAME WS_GROUP WS_TABSTOP WS_MINIMIZEBOX WS_MAXIMIZEBOX WS_TILED
39071d4279SBram Moolenaarsyn keyword rcAttribute WS_ICONIC WS_SIZEBOX WS_TILEDWINDOW WS_OVERLAPPEDWINDOW WS_POPUPWINDOW WS_CHILDWINDOW
40071d4279SBram Moolenaarsyn keyword rcAttribute WS_EX_DLGMODALFRAME WS_EX_NOPARENTNOTIFY WS_EX_TOPMOST WS_EX_ACCEPTFILES
41071d4279SBram Moolenaarsyn keyword rcAttribute WS_EX_TRANSPARENT WS_EX_MDICHILD WS_EX_TOOLWINDOW WS_EX_WINDOWEDGE WS_EX_CLIENTEDGE
42071d4279SBram Moolenaarsyn keyword rcAttribute WS_EX_CONTEXTHELP WS_EX_RIGHT WS_EX_LEFT WS_EX_RTLREADING WS_EX_LTRREADING
43071d4279SBram Moolenaarsyn keyword rcAttribute WS_EX_LEFTSCROLLBAR WS_EX_RIGHTSCROLLBAR WS_EX_CONTROLPARENT WS_EX_STATICEDGE
44071d4279SBram Moolenaarsyn keyword rcAttribute WS_EX_APPWINDOW WS_EX_OVERLAPPEDWINDOW WS_EX_PALETTEWINDOW
45071d4279SBram Moolenaarsyn keyword rcAttribute ES_LEFT ES_CENTER ES_RIGHT ES_MULTILINE ES_UPPERCASE ES_LOWERCASE ES_PASSWORD
46071d4279SBram Moolenaarsyn keyword rcAttribute ES_AUTOVSCROLL ES_AUTOHSCROLL ES_NOHIDESEL ES_OEMCONVERT ES_READONLY ES_WANTRETURN
47071d4279SBram Moolenaarsyn keyword rcAttribute ES_NUMBER
48071d4279SBram Moolenaarsyn keyword rcAttribute BS_PUSHBUTTON BS_DEFPUSHBUTTON BS_CHECKBOX BS_AUTOCHECKBOX BS_RADIOBUTTON BS_3STATE
49071d4279SBram Moolenaarsyn keyword rcAttribute BS_AUTO3STATE BS_GROUPBOX BS_USERBUTTON BS_AUTORADIOBUTTON BS_OWNERDRAW BS_LEFTTEXT
50071d4279SBram Moolenaarsyn keyword rcAttribute BS_TEXT BS_ICON BS_BITMAP BS_LEFT BS_RIGHT BS_CENTER BS_TOP BS_BOTTOM BS_VCENTER
51071d4279SBram Moolenaarsyn keyword rcAttribute BS_PUSHLIKE BS_MULTILINE BS_NOTIFY BS_FLAT BS_RIGHTBUTTON
52071d4279SBram Moolenaarsyn keyword rcAttribute SS_LEFT SS_CENTER SS_RIGHT SS_ICON SS_BLACKRECT SS_GRAYRECT SS_WHITERECT
53071d4279SBram Moolenaarsyn keyword rcAttribute SS_BLACKFRAME SS_GRAYFRAME SS_WHITEFRAME SS_USERITEM SS_SIMPLE SS_LEFTNOWORDWRAP
54071d4279SBram Moolenaarsyn keyword rcAttribute SS_OWNERDRAW SS_BITMAP SS_ENHMETAFILE SS_ETCHEDHORZ SS_ETCHEDVERT SS_ETCHEDFRAME
55071d4279SBram Moolenaarsyn keyword rcAttribute SS_TYPEMASK SS_NOPREFIX SS_NOTIFY SS_CENTERIMAGE SS_RIGHTJUST SS_REALSIZEIMAGE
56071d4279SBram Moolenaarsyn keyword rcAttribute SS_SUNKEN SS_ENDELLIPSIS SS_PATHELLIPSIS SS_WORDELLIPSIS SS_ELLIPSISMASK
57071d4279SBram Moolenaarsyn keyword rcAttribute DS_ABSALIGN DS_SYSMODAL DS_LOCALEDIT DS_SETFONT DS_MODALFRAME DS_NOIDLEMSG
58071d4279SBram Moolenaarsyn keyword rcAttribute DS_SETFOREGROUND DS_3DLOOK DS_FIXEDSYS DS_NOFAILCREATE DS_CONTROL DS_CENTER
59071d4279SBram Moolenaarsyn keyword rcAttribute DS_CENTERMOUSE DS_CONTEXTHELP
60071d4279SBram Moolenaarsyn keyword rcAttribute LBS_NOTIFY LBS_SORT LBS_NOREDRAW LBS_MULTIPLESEL LBS_OWNERDRAWFIXED
61071d4279SBram Moolenaarsyn keyword rcAttribute LBS_OWNERDRAWVARIABLE LBS_HASSTRINGS LBS_USETABSTOPS LBS_NOINTEGRALHEIGHT
62071d4279SBram Moolenaarsyn keyword rcAttribute LBS_MULTICOLUMN LBS_WANTKEYBOARDINPUT LBS_EXTENDEDSEL LBS_DISABLENOSCROLL
63071d4279SBram Moolenaarsyn keyword rcAttribute LBS_NODATA LBS_NOSEL LBS_STANDARD
64071d4279SBram Moolenaarsyn keyword rcAttribute CBS_SIMPLE CBS_DROPDOWN CBS_DROPDOWNLIST CBS_OWNERDRAWFIXED CBS_OWNERDRAWVARIABLE
65071d4279SBram Moolenaarsyn keyword rcAttribute CBS_AUTOHSCROLL CBS_OEMCONVERT CBS_SORT CBS_HASSTRINGS CBS_NOINTEGRALHEIGHT
66071d4279SBram Moolenaarsyn keyword rcAttribute CBS_DISABLENOSCROLL CBS_UPPERCASE CBS_LOWERCASE
67071d4279SBram Moolenaarsyn keyword rcAttribute SBS_HORZ SBS_VERT SBS_TOPALIGN SBS_LEFTALIGN SBS_BOTTOMALIGN SBS_RIGHTALIGN
68071d4279SBram Moolenaarsyn keyword rcAttribute SBS_SIZEBOXTOPLEFTALIGN SBS_SIZEBOXBOTTOMRIGHTALIGN SBS_SIZEBOX SBS_SIZEGRIP
69071d4279SBram Moolenaarsyn keyword rcAttribute CCS_TOP CCS_NOMOVEY CCS_BOTTOM CCS_NORESIZE CCS_NOPARENTALIGN CCS_ADJUSTABLE
70071d4279SBram Moolenaarsyn keyword rcAttribute CCS_NODIVIDER
71071d4279SBram Moolenaarsyn keyword rcAttribute LVS_ICON LVS_REPORT LVS_SMALLICON LVS_LIST LVS_TYPEMASK LVS_SINGLESEL LVS_SHOWSELALWAYS
72071d4279SBram Moolenaarsyn keyword rcAttribute LVS_SORTASCENDING LVS_SORTDESCENDING LVS_SHAREIMAGELISTS LVS_NOLABELWRAP
73071d4279SBram Moolenaarsyn keyword rcAttribute LVS_EDITLABELS LVS_OWNERDATA LVS_NOSCROLL LVS_TYPESTYLEMASK  LVS_ALIGNTOP LVS_ALIGNLEFT
74071d4279SBram Moolenaarsyn keyword rcAttribute LVS_ALIGNMASK LVS_OWNERDRAWFIXED LVS_NOCOLUMNHEADER LVS_NOSORTHEADER LVS_AUTOARRANGE
75071d4279SBram Moolenaarsyn keyword rcAttribute TVS_HASBUTTONS TVS_HASLINES TVS_LINESATROOT TVS_EDITLABELS TVS_DISABLEDRAGDROP
76071d4279SBram Moolenaarsyn keyword rcAttribute TVS_SHOWSELALWAYS
77071d4279SBram Moolenaarsyn keyword rcAttribute TCS_FORCEICONLEFT TCS_FORCELABELLEFT TCS_TABS TCS_BUTTONS TCS_SINGLELINE TCS_MULTILINE
78071d4279SBram Moolenaarsyn keyword rcAttribute TCS_RIGHTJUSTIFY TCS_FIXEDWIDTH TCS_RAGGEDRIGHT TCS_FOCUSONBUTTONDOWN
79071d4279SBram Moolenaarsyn keyword rcAttribute TCS_OWNERDRAWFIXED TCS_TOOLTIPS TCS_FOCUSNEVER
80071d4279SBram Moolenaarsyn keyword rcAttribute ACS_CENTER ACS_TRANSPARENT ACS_AUTOPLAY
81071d4279SBram Moolenaarsyn keyword rcStdId IDI_APPLICATION IDI_HAND IDI_QUESTION IDI_EXCLAMATION IDI_ASTERISK IDI_WINLOGO IDI_WINLOGO
82071d4279SBram Moolenaarsyn keyword rcStdId IDI_WARNING IDI_ERROR IDI_INFORMATION
83071d4279SBram Moolenaarsyn keyword rcStdId IDCANCEL IDABORT IDRETRY IDIGNORE IDYES IDNO IDCLOSE IDHELP IDC_STATIC
84071d4279SBram Moolenaar
85071d4279SBram Moolenaar" Common RC keywords
86071d4279SBram Moolenaar
87071d4279SBram Moolenaar" Common RC keywords
88071d4279SBram Moolenaarsyn keyword rcTodo contained	TODO FIXME XXX
89071d4279SBram Moolenaar
90071d4279SBram Moolenaar" String and Character constants
91071d4279SBram Moolenaar" Highlight special characters (those which have a backslash) differently
92071d4279SBram Moolenaarsyn match rcSpecial contained	"\\[0-7][0-7][0-7]\=\|\\."
93071d4279SBram Moolenaarsyn region rcString		start=+"+ skip=+\\\\\|\\"+ end=+"+ contains=rcSpecial
94071d4279SBram Moolenaarsyn match rcCharacter		"'[^\\]'"
95071d4279SBram Moolenaarsyn match rcSpecialCharacter	"'\\.'"
96071d4279SBram Moolenaarsyn match rcSpecialCharacter	"'\\[0-7][0-7]'"
97071d4279SBram Moolenaarsyn match rcSpecialCharacter	"'\\[0-7][0-7][0-7]'"
98071d4279SBram Moolenaar
99071d4279SBram Moolenaar"catch errors caused by wrong parenthesis
100071d4279SBram Moolenaarsyn region rcParen		transparent start='(' end=')' contains=ALLBUT,rcParenError,rcIncluded,rcSpecial,rcTodo
101071d4279SBram Moolenaarsyn match rcParenError		")"
102071d4279SBram Moolenaarsyn match rcInParen contained	"[{}]"
103071d4279SBram Moolenaar
104071d4279SBram Moolenaar"integer number, or floating point number without a dot and with "f".
105071d4279SBram Moolenaarsyn case ignore
106071d4279SBram Moolenaarsyn match rcNumber		"\<\d\+\(u\=l\=\|lu\|f\)\>"
107071d4279SBram Moolenaar"floating point number, with dot, optional exponent
108071d4279SBram Moolenaarsyn match rcFloat		"\<\d\+\.\d*\(e[-+]\=\d\+\)\=[fl]\=\>"
109071d4279SBram Moolenaar"floating point number, starting with a dot, optional exponent
110071d4279SBram Moolenaarsyn match rcFloat		"\.\d\+\(e[-+]\=\d\+\)\=[fl]\=\>"
111071d4279SBram Moolenaar"floating point number, without dot, with exponent
112071d4279SBram Moolenaarsyn match rcFloat		"\<\d\+e[-+]\=\d\+[fl]\=\>"
113071d4279SBram Moolenaar"hex number
114071d4279SBram Moolenaarsyn match rcNumber		"\<0x[0-9a-f]\+\(u\=l\=\|lu\)\>"
115071d4279SBram Moolenaar"syn match rcIdentifier	"\<[a-z_][a-z0-9_]*\>"
116071d4279SBram Moolenaarsyn case match
117071d4279SBram Moolenaar" flag an octal number with wrong digits
118071d4279SBram Moolenaarsyn match rcOctalError		"\<0[0-7]*[89]"
119071d4279SBram Moolenaar
120071d4279SBram Moolenaarif exists("rc_comment_strings")
121071d4279SBram Moolenaar  " A comment can contain rcString, rcCharacter and rcNumber.
122071d4279SBram Moolenaar  " But a "*/" inside a rcString in a rcComment DOES end the comment!  So we
123071d4279SBram Moolenaar  " need to use a special type of rcString: rcCommentString, which also ends on
124071d4279SBram Moolenaar  " "*/", and sees a "*" at the start of the line as comment again.
125071d4279SBram Moolenaar  " Unfortunately this doesn't very well work for // type of comments :-(
126071d4279SBram Moolenaar  syntax match rcCommentSkip	contained "^\s*\*\($\|\s\+\)"
127071d4279SBram Moolenaar  syntax region rcCommentString	contained start=+"+ skip=+\\\\\|\\"+ end=+"+ end=+\*/+me=s-1 contains=rcSpecial,rcCommentSkip
128071d4279SBram Moolenaar  syntax region rcComment2String	contained start=+"+ skip=+\\\\\|\\"+ end=+"+ end="$" contains=rcSpecial
129071d4279SBram Moolenaar  syntax region rcComment	start="/\*" end="\*/" contains=rcTodo,rcCommentString,rcCharacter,rcNumber,rcFloat
130071d4279SBram Moolenaar  syntax match  rcComment	"//.*" contains=rcTodo,rcComment2String,rcCharacter,rcNumber
131071d4279SBram Moolenaarelse
132071d4279SBram Moolenaar  syn region rcComment		start="/\*" end="\*/" contains=rcTodo
133071d4279SBram Moolenaar  syn match rcComment		"//.*" contains=rcTodo
134071d4279SBram Moolenaarendif
135071d4279SBram Moolenaarsyntax match rcCommentError	"\*/"
136071d4279SBram Moolenaar
137071d4279SBram Moolenaarsyn region rcPreCondit	start="^\s*#\s*\(if\>\|ifdef\>\|ifndef\>\|elif\>\|else\>\|endif\>\)" skip="\\$" end="$" contains=rcComment,rcString,rcCharacter,rcNumber,rcCommentError
138071d4279SBram Moolenaarsyn region rcIncluded contained start=+"+ skip=+\\\\\|\\"+ end=+"+
139071d4279SBram Moolenaarsyn match rcIncluded contained "<[^>]*>"
140071d4279SBram Moolenaarsyn match rcInclude		"^\s*#\s*include\>\s*["<]" contains=rcIncluded
141071d4279SBram Moolenaar"syn match rcLineSkip	"\\$"
142071d4279SBram Moolenaarsyn region rcDefine		start="^\s*#\s*\(define\>\|undef\>\)" skip="\\$" end="$" contains=ALLBUT,rcPreCondit,rcIncluded,rcInclude,rcDefine,rcInParen
143071d4279SBram Moolenaarsyn region rcPreProc		start="^\s*#\s*\(pragma\>\|line\>\|warning\>\|warn\>\|error\>\)" skip="\\$" end="$" contains=ALLBUT,rcPreCondit,rcIncluded,rcInclude,rcDefine,rcInParen
144071d4279SBram Moolenaar
145071d4279SBram Moolenaarsyn sync ccomment rcComment minlines=10
146071d4279SBram Moolenaar
147071d4279SBram Moolenaar" Define the default highlighting.
14889bcfda6SBram Moolenaar" Only when an item doesn't have highlighting yet
149071d4279SBram Moolenaar
150*f37506f6SBram Moolenaarhi def link rcCharacter	Character
151*f37506f6SBram Moolenaarhi def link rcSpecialCharacter rcSpecial
152*f37506f6SBram Moolenaarhi def link rcNumber	Number
153*f37506f6SBram Moolenaarhi def link rcFloat	Float
154*f37506f6SBram Moolenaarhi def link rcOctalError	rcError
155*f37506f6SBram Moolenaarhi def link rcParenError	rcError
156*f37506f6SBram Moolenaarhi def link rcInParen	rcError
157*f37506f6SBram Moolenaarhi def link rcCommentError	rcError
158*f37506f6SBram Moolenaarhi def link rcInclude	Include
159*f37506f6SBram Moolenaarhi def link rcPreProc	PreProc
160*f37506f6SBram Moolenaarhi def link rcDefine	Macro
161*f37506f6SBram Moolenaarhi def link rcIncluded	rcString
162*f37506f6SBram Moolenaarhi def link rcError	Error
163*f37506f6SBram Moolenaarhi def link rcPreCondit	PreCondit
164*f37506f6SBram Moolenaarhi def link rcCommentString rcString
165*f37506f6SBram Moolenaarhi def link rcComment2String rcString
166*f37506f6SBram Moolenaarhi def link rcCommentSkip	rcComment
167*f37506f6SBram Moolenaarhi def link rcString	String
168*f37506f6SBram Moolenaarhi def link rcComment	Comment
169*f37506f6SBram Moolenaarhi def link rcSpecial	SpecialChar
170*f37506f6SBram Moolenaarhi def link rcTodo	Todo
171071d4279SBram Moolenaar
172*f37506f6SBram Moolenaarhi def link rcAttribute	rcCommonAttribute
173*f37506f6SBram Moolenaarhi def link rcStdId	rcStatement
174*f37506f6SBram Moolenaarhi def link rcStatement	Statement
175071d4279SBram Moolenaar
176071d4279SBram Moolenaar" Default color overrides
177071d4279SBram Moolenaarhi def rcLanguage	term=reverse ctermbg=Red ctermfg=Yellow guibg=Red guifg=Yellow
178071d4279SBram Moolenaarhi def rcMainObject	term=underline ctermfg=Blue guifg=Blue
179071d4279SBram Moolenaarhi def rcSubObject	ctermfg=Green guifg=Green
180071d4279SBram Moolenaarhi def rcCaptionParam	term=underline ctermfg=DarkGreen guifg=Green
181071d4279SBram Moolenaarhi def rcParam	ctermfg=DarkGreen guifg=DarkGreen
182071d4279SBram Moolenaarhi def rcStatement	ctermfg=DarkGreen guifg=DarkGreen
183071d4279SBram Moolenaarhi def rcCommonAttribute	ctermfg=Brown guifg=Brown
184071d4279SBram Moolenaar
185*f37506f6SBram Moolenaar"hi def link rcIdentifier	Identifier
186071d4279SBram Moolenaar
187071d4279SBram Moolenaar
188071d4279SBram Moolenaarlet b:current_syntax = "rc"
189071d4279SBram Moolenaar
190071d4279SBram Moolenaar" vim: ts=8
191