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