xref: /vim-8.2.3635/runtime/syntax/d.vim (revision 681baaf4)
1*681baaf4SBram Moolenaar" Vim syntax file for the D programming language (version 1.076 and 2.069).
2071d4279SBram Moolenaar"
3071d4279SBram Moolenaar" Language:     D
424ea3babSBram Moolenaar" Maintainer:   Jesse Phillips <Jesse.K.Phillips[email protected]>
5*681baaf4SBram Moolenaar" Last Change:  2016 Feb 2
6*681baaf4SBram Moolenaar" Version:      0.28
79db9d9ceSBram Moolenaar"
89db9d9ceSBram Moolenaar" Contributors:
9543b7ef7SBram Moolenaar"   - Jason Mills: original Maintainer
106be7f873SBram Moolenaar"   - Kirk McDonald
116be7f873SBram Moolenaar"   - Tim Keating
126be7f873SBram Moolenaar"   - Frank Benoit
13543b7ef7SBram Moolenaar"   - Shougo Matsushita
146be7f873SBram Moolenaar"   - Ellery Newcomer
156be7f873SBram Moolenaar"   - Steven N. Oliver
166be7f873SBram Moolenaar"   - Sohgo Takeuchi
17543b7ef7SBram Moolenaar"   - Robert Clipsham
18*681baaf4SBram Moolenaar"   - Petar Kirov
199db9d9ceSBram Moolenaar"
206be7f873SBram Moolenaar" Please submit bugs/comments/suggestions to the github repo:
21543b7ef7SBram Moolenaar" https://github.com/JesseKPhillips/d.vim
22071d4279SBram Moolenaar"
23071d4279SBram Moolenaar" Options:
249db9d9ceSBram Moolenaar"   d_comment_strings - Set to highlight strings and numbers in comments.
25071d4279SBram Moolenaar"
269db9d9ceSBram Moolenaar"   d_hl_operator_overload - Set to highlight D's specially named functions
279db9d9ceSBram Moolenaar"   that when overloaded implement unary and binary operators (e.g. opCmp).
28071d4279SBram Moolenaar"
296be7f873SBram Moolenaar"   d_hl_object_types - Set to highlight some common types from object.di.
30071d4279SBram Moolenaar
31071d4279SBram Moolenaar" Quit when a syntax file was already loaded
32071d4279SBram Moolenaarif exists("b:current_syntax")
33071d4279SBram Moolenaar  finish
34071d4279SBram Moolenaarendif
35071d4279SBram Moolenaar
366be7f873SBram Moolenaar" Support cpoptions
376be7f873SBram Moolenaarlet s:cpo_save = &cpo
386be7f873SBram Moolenaarset cpo&vim
396be7f873SBram Moolenaar
406be7f873SBram Moolenaar" Set the current syntax to be known as d
416be7f873SBram Moolenaarlet b:current_syntax = "d"
426be7f873SBram Moolenaar
43071d4279SBram Moolenaar" Keyword definitions
44071d4279SBram Moolenaar"
45543b7ef7SBram Moolenaarsyn keyword dExternal              contained import module
46543b7ef7SBram Moolenaarsyn keyword dAssert                assert
479db9d9ceSBram Moolenaarsyn keyword dConditional           if else switch
48071d4279SBram Moolenaarsyn keyword dBranch                goto break continue
499db9d9ceSBram Moolenaarsyn keyword dRepeat                while for do foreach foreach_reverse
50071d4279SBram Moolenaarsyn keyword dBoolean               true false
51071d4279SBram Moolenaarsyn keyword dConstant              null
529db9d9ceSBram Moolenaarsyn keyword dConstant              __FILE__ __LINE__ __EOF__ __VERSION__
539db9d9ceSBram Moolenaarsyn keyword dConstant              __DATE__ __TIME__ __TIMESTAMP__ __VENDOR__
54543b7ef7SBram Moolenaarsyn keyword dConstant              __MODULE__ __FUNCTION__ __PRETTY_FUNCTION__
55071d4279SBram Moolenaarsyn keyword dTypedef               alias typedef
569db9d9ceSBram Moolenaarsyn keyword dStructure             template interface class struct union
579db9d9ceSBram Moolenaarsyn keyword dEnum                  enum
5821cf823aSBram Moolenaarsyn keyword dOperator              new delete typeof typeid cast align is
59071d4279SBram Moolenaarsyn keyword dOperator              this super
60071d4279SBram Moolenaarif exists("d_hl_operator_overload")
6124ea3babSBram Moolenaar  syn keyword dOpOverload          opNeg opCom opPostInc opPostDec opCast opAdd
6224ea3babSBram Moolenaar  syn keyword dOpOverload          opSub opSub_r opMul opDiv opDiv_r opMod
6324ea3babSBram Moolenaar  syn keyword dOpOverload          opMod_r opAnd opOr opXor opShl opShl_r opShr
6424ea3babSBram Moolenaar  syn keyword dOpOverload          opShr_r opUShr opUShr_r opCat
65543b7ef7SBram Moolenaar  syn keyword dOpOverload          opCat_r opEquals opCmp
6624ea3babSBram Moolenaar  syn keyword dOpOverload          opAssign opAddAssign opSubAssign opMulAssign
6724ea3babSBram Moolenaar  syn keyword dOpOverload          opDivAssign opModAssign opAndAssign
6824ea3babSBram Moolenaar  syn keyword dOpOverload          opOrAssign opXorAssign opShlAssign
6924ea3babSBram Moolenaar  syn keyword dOpOverload          opShrAssign opUShrAssign opCatAssign
7024ea3babSBram Moolenaar  syn keyword dOpOverload          opIndex opIndexAssign opIndexOpAssign
7124ea3babSBram Moolenaar  syn keyword dOpOverload          opCall opSlice opSliceAssign opSliceOpAssign
7224ea3babSBram Moolenaar  syn keyword dOpOverload          opPos opAdd_r opMul_r opAnd_r opOr_r opXor_r
7324ea3babSBram Moolenaar  syn keyword dOpOverload          opIn opIn_r opPow opDispatch opStar opDot
746be7f873SBram Moolenaar  syn keyword dOpOverload          opApply opApplyReverse opDollar
7524ea3babSBram Moolenaar  syn keyword dOpOverload          opUnary opIndexUnary opSliceUnary
7624ea3babSBram Moolenaar  syn keyword dOpOverload          opBinary opBinaryRight
77071d4279SBram Moolenaarendif
7824ea3babSBram Moolenaar
796be7f873SBram Moolenaarsyn keyword dType                  byte ubyte short ushort int uint long ulong cent ucent
80543b7ef7SBram Moolenaarsyn keyword dType                  void bool Object
816be7f873SBram Moolenaarsyn keyword dType                  float double real
826be7f873SBram Moolenaarsyn keyword dType                  ushort int uint long ulong float
836be7f873SBram Moolenaarsyn keyword dType                  char wchar dchar string wstring dstring
846be7f873SBram Moolenaarsyn keyword dType                  ireal ifloat idouble creal cfloat cdouble
856be7f873SBram Moolenaarsyn keyword dType                  size_t ptrdiff_t sizediff_t equals_t hash_t
866be7f873SBram Moolenaarif exists("d_hl_object_types")
876be7f873SBram Moolenaar  syn keyword dType                Object Throwable AssociativeArray Error Exception
886be7f873SBram Moolenaar  syn keyword dType                Interface OffsetTypeInfo TypeInfo TypeInfo_Typedef
896be7f873SBram Moolenaar  syn keyword dType                TypeInfo_Enum TypeInfo_Pointer TypeInfo_Array
906be7f873SBram Moolenaar  syn keyword dType                TypeInfo_StaticArray TypeInfo_AssociativeArray
916be7f873SBram Moolenaar  syn keyword dType                TypeInfo_Function TypeInfo_Delegate TypeInfo_Class
926be7f873SBram Moolenaar  syn keyword dType                ClassInfo TypeInfo_Interface TypeInfo_Struct
936be7f873SBram Moolenaar  syn keyword dType                TypeInfo_Tuple TypeInfo_Const TypeInfo_Invariant
946be7f873SBram Moolenaar  syn keyword dType                TypeInfo_Shared TypeInfo_Inout MemberInfo
956be7f873SBram Moolenaar  syn keyword dType                MemberInfo_field MemberInfo_function ModuleInfo
966be7f873SBram Moolenaarendif
9724ea3babSBram Moolenaarsyn keyword dDebug                 deprecated unittest invariant
98071d4279SBram Moolenaarsyn keyword dExceptions            throw try catch finally
996be7f873SBram Moolenaarsyn keyword dScopeDecl             public protected private export package
10024ea3babSBram Moolenaarsyn keyword dStatement             debug return with
101543b7ef7SBram Moolenaarsyn keyword dStatement             function delegate __ctfe mixin macro __simd
102543b7ef7SBram Moolenaarsyn keyword dStatement             in out body
103543b7ef7SBram Moolenaarsyn keyword dStorageClass          contained in out scope
104543b7ef7SBram Moolenaarsyn keyword dStorageClass          inout ref lazy pure nothrow
10524ea3babSBram Moolenaarsyn keyword dStorageClass          auto static override final abstract volatile
106543b7ef7SBram Moolenaarsyn keyword dStorageClass          __gshared __vector
10724ea3babSBram Moolenaarsyn keyword dStorageClass          synchronized shared immutable const lazy
108543b7ef7SBram Moolenaarsyn keyword dIdentifier            _arguments _argptr __vptr __monitor
109543b7ef7SBram Moolenaarsyn keyword dIdentifier             _ctor _dtor __argTypes __overloadset
11024ea3babSBram Moolenaarsyn keyword dScopeIdentifier       contained exit success failure
111543b7ef7SBram Moolenaarsyn keyword dTraitsIdentifier      contained isAbstractClass isArithmetic
112543b7ef7SBram Moolenaarsyn keyword dTraitsIdentifier      contained isAssociativeArray isFinalClass
113543b7ef7SBram Moolenaarsyn keyword dTraitsIdentifier      contained isPOD isNested isFloating
114543b7ef7SBram Moolenaarsyn keyword dTraitsIdentifier      contained isIntegral isScalar isStaticArray
115543b7ef7SBram Moolenaarsyn keyword dTraitsIdentifier      contained isUnsigned isVirtualFunction
116543b7ef7SBram Moolenaarsyn keyword dTraitsIdentifier      contained isVirtualMethod isAbstractFunction
117543b7ef7SBram Moolenaarsyn keyword dTraitsIdentifier      contained isFinalFunction isStaticFunction
118*681baaf4SBram Moolenaarsyn keyword dTraitsIdentifier      contained isOverrideFunction isTemplate
119543b7ef7SBram Moolenaarsyn keyword dTraitsIdentifier      contained isRef isOut isLazy hasMember
120*681baaf4SBram Moolenaarsyn keyword dTraitsIdentifier      contained identifier getAliasThis
121*681baaf4SBram Moolenaarsyn keyword dTraitsIdentifier      contained getAttributes getFunctionAttributes getMember
122*681baaf4SBram Moolenaarsyn keyword dTraitsIdentifier      contained getOverloads getPointerBitmap getProtection
123*681baaf4SBram Moolenaarsyn keyword dTraitsIdentifier      contained getVirtualFunctions getVirtualIndex
124*681baaf4SBram Moolenaarsyn keyword dTraitsIdentifier      contained getVirtualMethods getUnitTests
125*681baaf4SBram Moolenaarsyn keyword dTraitsIdentifier      contained parent classInstanceSize allMembers
126543b7ef7SBram Moolenaarsyn keyword dTraitsIdentifier      contained derivedMembers isSame compiles
127*681baaf4SBram Moolenaarsyn keyword dPragmaIdentifier      contained inline lib mangle msg startaddress GNU_asm
128*681baaf4SBram Moolenaarsyn keyword dExternIdentifier      contained C C++ D Windows Pascal System Objective-C
12924ea3babSBram Moolenaarsyn keyword dAttribute             contained safe trusted system
130*681baaf4SBram Moolenaarsyn keyword dAttribute             contained property disable nogc
1316be7f873SBram Moolenaarsyn keyword dVersionIdentifier     contained DigitalMars GNU LDC SDC D_NET
1326be7f873SBram Moolenaarsyn keyword dVersionIdentifier     contained X86 X86_64 ARM PPC PPC64 IA64 MIPS MIPS64 Alpha
1336be7f873SBram Moolenaarsyn keyword dVersionIdentifier     contained SPARC SPARC64 S390 S390X HPPA HPPA64 SH SH64
1346be7f873SBram Moolenaarsyn keyword dVersionIdentifier     contained linux Posix OSX FreeBSD Windows Win32 Win64
1356be7f873SBram Moolenaarsyn keyword dVersionIdentifier     contained OpenBSD BSD Solaris AIX SkyOS SysV3 SysV4 Hurd
1366be7f873SBram Moolenaarsyn keyword dVersionIdentifier     contained Cygwin MinGW
1376be7f873SBram Moolenaarsyn keyword dVersionIdentifier     contained LittleEndian BigEndian
1386be7f873SBram Moolenaarsyn keyword dVersionIdentifier     contained D_InlineAsm_X86 D_InlineAsm_X86_64
1396be7f873SBram Moolenaarsyn keyword dVersionIdentifier     contained D_Version2 D_Coverage D_Ddoc D_LP64 D_PIC
140*681baaf4SBram Moolenaarsyn keyword dVersionIdentifier     contained unittest assert none all
14124ea3babSBram Moolenaar
142543b7ef7SBram Moolenaarsyn cluster dComment contains=dNestedComment,dBlockComment,dLineComment
143543b7ef7SBram Moolenaar
14424ea3babSBram Moolenaar" Highlight the sharpbang
14524ea3babSBram Moolenaarsyn match dSharpBang "\%^#!.*"     display
146071d4279SBram Moolenaar
1479db9d9ceSBram Moolenaar" Attributes/annotations
14824ea3babSBram Moolenaarsyn match dAnnotation	"@[_$a-zA-Z][_$a-zA-Z0-9_]*\>" contains=dAttribute
14924ea3babSBram Moolenaar
15024ea3babSBram Moolenaar" Version Identifiers
151543b7ef7SBram Moolenaarsyn match dVersion      "\<version\>"
152543b7ef7SBram Moolenaarsyn match dVersion      "\<version\s*([_a-zA-Z][_a-zA-Z0-9]*\>"he=s+7 contains=dVersionIdentifier
15324ea3babSBram Moolenaar
15424ea3babSBram Moolenaar" Scope Identifiers
155543b7ef7SBram Moolenaarsyn match dStatement    "\<scope\>"
156543b7ef7SBram Moolenaarsyn match dStatement    "\<scope\s*([_a-zA-Z][_a-zA-Z0-9]*\>"he=s+5 contains=dScopeIdentifier
1576be7f873SBram Moolenaar
158543b7ef7SBram Moolenaar" Traits Statement
159543b7ef7SBram Moolenaarsyn match dStatement    "\<__traits\>"
160543b7ef7SBram Moolenaarsyn match dStatement    "\<__traits\s*([_a-zA-Z][_a-zA-Z0-9]*\>"he=s+8 contains=dTraitsIdentifier
161543b7ef7SBram Moolenaar
162543b7ef7SBram Moolenaar" Pragma Statement
163543b7ef7SBram Moolenaarsyn match dPragma       "\<pragma\>"
164b1332080SBram Moolenaarsyn match dPragma       "\<pragma\s*([_a-zA-Z][_a-zA-Z0-9]*\>"he=s+6 contains=dPragmaIdentifier
1656be7f873SBram Moolenaar
1666be7f873SBram Moolenaar" Necessary to highlight C++ in extern modifiers.
1676be7f873SBram Moolenaarsyn match dExternIdentifier "C\(++\)\?" contained
1686be7f873SBram Moolenaar
1696be7f873SBram Moolenaar" Extern Identifiers
170543b7ef7SBram Moolenaarsyn match dExternal     "\<extern\>"
1716be7f873SBram Moolenaarsyn match dExtern       "\<extern\s*([_a-zA-Z][_a-zA-Z0-9\+]*\>"he=s+6 contains=dExternIdentifier
17224ea3babSBram Moolenaar
173543b7ef7SBram Moolenaar" Make import a region to prevent highlighting keywords
174*681baaf4SBram Moolenaarsyn region dImport start="\<import\_s" end=";" contains=dExternal,@dComment
175071d4279SBram Moolenaar
176543b7ef7SBram Moolenaar" Make module a region to prevent highlighting keywords
177*681baaf4SBram Moolenaarsyn region dImport start="\<module\_s" end=";" contains=dExternal,@dComment
178071d4279SBram Moolenaar
1799db9d9ceSBram Moolenaar" dTokens is used by the token string highlighting
1809db9d9ceSBram Moolenaarsyn cluster dTokens contains=dExternal,dConditional,dBranch,dRepeat,dBoolean
1819db9d9ceSBram Moolenaarsyn cluster dTokens add=dConstant,dTypedef,dStructure,dOperator,dOpOverload
1829db9d9ceSBram Moolenaarsyn cluster dTokens add=dType,dDebug,dExceptions,dScopeDecl,dStatement
183543b7ef7SBram Moolenaarsyn cluster dTokens add=dStorageClass,dPragma,dAssert,dAnnotation,dEnum
184b1332080SBram Moolenaarsyn cluster dTokens add=dParenString,dBrackString,dAngleString,dCurlyString
185b1332080SBram Moolenaarsyn cluster dTokens add=dTokenString,dDelimString,dHereString
1869db9d9ceSBram Moolenaar
187543b7ef7SBram Moolenaar" Create a match for parameter lists to identify storage class
188543b7ef7SBram Moolenaarsyn region paramlist start="(" end=")" contains=@dTokens
189071d4279SBram Moolenaar
190071d4279SBram Moolenaar" Labels
191071d4279SBram Moolenaar"
192071d4279SBram Moolenaar" We contain dScopeDecl so public: private: etc. are not highlighted like labels
1939db9d9ceSBram Moolenaarsyn match dUserLabel    "^\s*[_$a-zA-Z][_$a-zA-Z0-9_]*\s*:"he=e-1 contains=dLabel,dScopeDecl,dEnum
194071d4279SBram Moolenaarsyn keyword dLabel      case default
195071d4279SBram Moolenaar
1969db9d9ceSBram Moolenaarsyn cluster dTokens add=dUserLabel,dLabel
1979db9d9ceSBram Moolenaar
198071d4279SBram Moolenaar" Comments
199071d4279SBram Moolenaar"
200b1332080SBram Moolenaarsyn match	dCommentError	display "\*/"
201b1332080SBram Moolenaarsyn match	dNestedCommentError	display "+/"
202b1332080SBram Moolenaar
2039db9d9ceSBram Moolenaarsyn keyword dTodo                                                                contained TODO FIXME TEMP REFACTOR REVIEW HACK BUG XXX
204071d4279SBram Moolenaarsyn match dCommentStar	contained "^\s*\*[^/]"me=e-1
205071d4279SBram Moolenaarsyn match dCommentStar	contained "^\s*\*$"
206071d4279SBram Moolenaarsyn match dCommentPlus	contained "^\s*+[^/]"me=e-1
207071d4279SBram Moolenaarsyn match dCommentPlus	contained "^\s*+$"
208071d4279SBram Moolenaarif exists("d_comment_strings")
209071d4279SBram Moolenaar  syn region dBlockCommentString	contained start=+"+ end=+"+ end=+\*/+me=s-1,he=s-1 contains=dCommentStar,dUnicode,dEscSequence,@Spell
210071d4279SBram Moolenaar  syn region dNestedCommentString	contained start=+"+ end=+"+ end="+"me=s-1,he=s-1 contains=dCommentPlus,dUnicode,dEscSequence,@Spell
211071d4279SBram Moolenaar  syn region dLineCommentString		contained start=+"+ end=+$\|"+ contains=dUnicode,dEscSequence,@Spell
212071d4279SBram Moolenaarendif
213071d4279SBram Moolenaar
214b1332080SBram Moolenaarsyn region dBlockComment	start="/\*"  end="\*/" contains=dBlockCommentString,dTodo,dCommentStartError,@Spell fold
215b1332080SBram Moolenaarsyn region dNestedComment	start="/+"  end="+/" contains=dNestedComment,dNestedCommentString,dTodo,@Spell fold
216b1332080SBram Moolenaarsyn match  dLineComment	"//.*" contains=dLineCommentString,dTodo,@Spell
217b1332080SBram Moolenaar
218071d4279SBram Moolenaarhi link dLineCommentString	dBlockCommentString
219071d4279SBram Moolenaarhi link dBlockCommentString	dString
220071d4279SBram Moolenaarhi link dNestedCommentString	dString
221071d4279SBram Moolenaarhi link dCommentStar		dBlockComment
222071d4279SBram Moolenaarhi link dCommentPlus		dNestedComment
223071d4279SBram Moolenaar
2249db9d9ceSBram Moolenaarsyn cluster dTokens add=dBlockComment,dNestedComment,dLineComment
2259db9d9ceSBram Moolenaar
2265baddf02SBram Moolenaar" /+ +/ style comments and strings that span multiple lines can cause
2275baddf02SBram Moolenaar" problems. To play it safe, set minlines to a large number.
2285baddf02SBram Moolenaarsyn sync minlines=200
2295baddf02SBram Moolenaar" Use ccomment for /* */ style comments
2305baddf02SBram Moolenaarsyn sync ccomment dBlockComment
231071d4279SBram Moolenaar
232071d4279SBram Moolenaar" Characters
233071d4279SBram Moolenaar"
234071d4279SBram Moolenaarsyn match dSpecialCharError contained "[^']"
235071d4279SBram Moolenaar
236cd71fa3cSBram Moolenaar" Escape sequences (oct,specal char,hex,wchar, character entities \&xxx;)
2379db9d9ceSBram Moolenaar" These are not contained because they are considered string literals.
238071d4279SBram Moolenaarsyn match dEscSequence	"\\\(\o\{1,3}\|[\"\\'\\?ntbrfva]\|u\x\{4}\|U\x\{8}\|x\x\x\)"
239cd71fa3cSBram Moolenaarsyn match dEscSequence	"\\&[^;& \t]\+;"
240071d4279SBram Moolenaarsyn match dCharacter	"'[^']*'" contains=dEscSequence,dSpecialCharError
241071d4279SBram Moolenaarsyn match dCharacter	"'\\''" contains=dEscSequence
242071d4279SBram Moolenaarsyn match dCharacter	"'[^\\]'"
243071d4279SBram Moolenaar
2449db9d9ceSBram Moolenaarsyn cluster dTokens add=dEscSequence,dCharacter
2459db9d9ceSBram Moolenaar
246071d4279SBram Moolenaar" Unicode characters
247071d4279SBram Moolenaar"
248071d4279SBram Moolenaarsyn match dUnicode "\\u\d\{4\}"
249071d4279SBram Moolenaar
250071d4279SBram Moolenaar" String.
251071d4279SBram Moolenaar"
252*681baaf4SBram Moolenaarsyn match	dFormat		display "%\(\d\+\$\)\=[-+' #0*]*\(\d*\|\*\|\*\d\+\$\)\(\.\(\d*\|\*\|\*\d\+\$\)\)\=\([hlL]\|ll\)\=\([bdiuoxXDOUfeEgGcCsSpn]\|\[\^\=.[^]]*\]\)" contained
253*681baaf4SBram Moolenaarsyn match	dFormat		display "%%" contained
254*681baaf4SBram Moolenaar
255*681baaf4SBram Moolenaarsyn region dString	start=+"+ end=+"[cwd]\=+ skip=+\\\\\|\\"+ contains=dFormat,dEscSequence,@Spell
2569db9d9ceSBram Moolenaarsyn region dRawString	start=+`+ end=+`[cwd]\=+ contains=@Spell
2579db9d9ceSBram Moolenaarsyn region dRawString	start=+r"+ end=+"[cwd]\=+ contains=@Spell
2589db9d9ceSBram Moolenaarsyn region dHexString	start=+x"+ end=+"[cwd]\=+ contains=@Spell
2599db9d9ceSBram Moolenaarsyn region dDelimString	start=+q"\z(.\)+ end=+\z1"+ contains=@Spell
260b1332080SBram Moolenaarsyn region dHereString	start=+q"\z(\I\i*\)\n+ end=+^\z1"+ contains=@Spell
2619db9d9ceSBram Moolenaar
262*681baaf4SBram Moolenaar
2639db9d9ceSBram Moolenaar" Nesting delimited string contents
2649db9d9ceSBram Moolenaar"
2659db9d9ceSBram Moolenaarsyn region dNestParenString start=+(+ end=+)+ contained transparent contains=dNestParenString,@Spell
2669db9d9ceSBram Moolenaarsyn region dNestBrackString start=+\[+ end=+\]+ contained transparent contains=dNestBrackString,@Spell
2679db9d9ceSBram Moolenaarsyn region dNestAngleString start=+<+ end=+>+ contained transparent contains=dNestAngleString,@Spell
2689db9d9ceSBram Moolenaarsyn region dNestCurlyString start=+{+ end=+}+ contained transparent contains=dNestCurlyString,@Spell
2699db9d9ceSBram Moolenaar
2709db9d9ceSBram Moolenaar" Nesting delimited strings
2719db9d9ceSBram Moolenaar"
2729db9d9ceSBram Moolenaarsyn region dParenString	matchgroup=dParenString start=+q"(+ end=+)"+ contains=dNestParenString,@Spell
2739db9d9ceSBram Moolenaarsyn region dBrackString	matchgroup=dBrackString start=+q"\[+ end=+\]"+ contains=dNestBrackString,@Spell
2749db9d9ceSBram Moolenaarsyn region dAngleString	matchgroup=dAngleString start=+q"<+ end=+>"+ contains=dNestAngleString,@Spell
2759db9d9ceSBram Moolenaarsyn region dCurlyString	matchgroup=dCurlyString start=+q"{+ end=+}"+ contains=dNestCurlyString,@Spell
2769db9d9ceSBram Moolenaar
2779db9d9ceSBram Moolenaarhi link dParenString dNestString
2789db9d9ceSBram Moolenaarhi link dBrackString dNestString
2799db9d9ceSBram Moolenaarhi link dAngleString dNestString
2809db9d9ceSBram Moolenaarhi link dCurlyString dNestString
2819db9d9ceSBram Moolenaar
2829db9d9ceSBram Moolenaarsyn cluster dTokens add=dString,dRawString,dHexString,dDelimString,dNestString
2839db9d9ceSBram Moolenaar
2849db9d9ceSBram Moolenaar" Token strings
2859db9d9ceSBram Moolenaar"
286*681baaf4SBram Moolenaarsyn region dNestTokenString start=+{+ end=+}+ contained contains=dNestTokenString,@dTokens,dFormat
287*681baaf4SBram Moolenaarsyn region dTokenString matchgroup=dTokenStringBrack transparent start=+q{+ end=+}+ contains=dNestTokenString,@dTokens,dFormat
2889db9d9ceSBram Moolenaar
2899db9d9ceSBram Moolenaarsyn cluster dTokens add=dTokenString
290071d4279SBram Moolenaar
291071d4279SBram Moolenaar" Numbers
292071d4279SBram Moolenaar"
293071d4279SBram Moolenaarsyn case ignore
2945baddf02SBram Moolenaar
2955baddf02SBram Moolenaarsyn match dDec		display "\<\d[0-9_]*\(u\=l\=\|l\=u\=\)\>"
2965baddf02SBram Moolenaar
297071d4279SBram Moolenaar" Hex number
298071d4279SBram Moolenaarsyn match dHex		display "\<0x[0-9a-f_]\+\(u\=l\=\|l\=u\=\)\>"
2995baddf02SBram Moolenaar
3005baddf02SBram Moolenaarsyn match dOctal	display "\<0[0-7_]\+\(u\=l\=\|l\=u\=\)\>"
3015baddf02SBram Moolenaar" flag an octal number with wrong digits
3025baddf02SBram Moolenaarsyn match dOctalError	display "\<0[0-7_]*[89][0-9_]*"
3035baddf02SBram Moolenaar
3045baddf02SBram Moolenaar" binary numbers
3055baddf02SBram Moolenaarsyn match dBinary	display "\<0b[01_]\+\(u\=l\=\|l\=u\=\)\>"
306071d4279SBram Moolenaar
307071d4279SBram Moolenaar"floating point without the dot
308071d4279SBram Moolenaarsyn match dFloat	display "\<\d[0-9_]*\(fi\=\|l\=i\)\>"
309071d4279SBram Moolenaar"floating point number, with dot, optional exponent
310071d4279SBram Moolenaarsyn match dFloat	display "\<\d[0-9_]*\.[0-9_]*\(e[-+]\=[0-9_]\+\)\=[fl]\=i\="
311071d4279SBram Moolenaar"floating point number, starting with a dot, optional exponent
312071d4279SBram Moolenaarsyn match dFloat	display "\(\.[0-9_]\+\)\(e[-+]\=[0-9_]\+\)\=[fl]\=i\=\>"
313071d4279SBram Moolenaar"floating point number, without dot, with exponent
314071d4279SBram Moolenaar"syn match dFloat	display "\<\d\+e[-+]\=\d\+[fl]\=\>"
315071d4279SBram Moolenaarsyn match dFloat	display "\<\d[0-9_]*e[-+]\=[0-9_]\+[fl]\=\>"
316071d4279SBram Moolenaar
317071d4279SBram Moolenaar"floating point without the dot
3185baddf02SBram Moolenaarsyn match dHexFloat	display "\<0x[0-9a-f_]\+\(fi\=\|l\=i\)\>"
319071d4279SBram Moolenaar"floating point number, with dot, optional exponent
3205baddf02SBram Moolenaarsyn match dHexFloat	display "\<0x[0-9a-f_]\+\.[0-9a-f_]*\(p[-+]\=[0-9_]\+\)\=[fl]\=i\="
321071d4279SBram Moolenaar"floating point number, without dot, with exponent
3225baddf02SBram Moolenaarsyn match dHexFloat	display "\<0x[0-9a-f_]\+p[-+]\=[0-9_]\+[fl]\=i\=\>"
323071d4279SBram Moolenaar
3249db9d9ceSBram Moolenaarsyn cluster dTokens add=dDec,dHex,dOctal,dOctalError,dBinary,dFloat,dHexFloat
3259db9d9ceSBram Moolenaar
326071d4279SBram Moolenaarsyn case match
327071d4279SBram Moolenaar
328071d4279SBram Moolenaar" Pragma (preprocessor) support
329071d4279SBram Moolenaar" TODO: Highlight following Integer and optional Filespec.
330071d4279SBram Moolenaarsyn region  dPragma start="#\s*\(line\>\)" skip="\\$" end="$"
331071d4279SBram Moolenaar
3326be7f873SBram Moolenaar" Block
3336be7f873SBram Moolenaar"
3346be7f873SBram Moolenaarsyn region dBlock	start="{" end="}" transparent fold
3356be7f873SBram Moolenaar
336071d4279SBram Moolenaar
337071d4279SBram Moolenaar" The default highlighting.
338071d4279SBram Moolenaar"
339071d4279SBram Moolenaarhi def link dBinary              Number
3405baddf02SBram Moolenaarhi def link dDec                 Number
341071d4279SBram Moolenaarhi def link dHex                 Number
342071d4279SBram Moolenaarhi def link dOctal               Number
343071d4279SBram Moolenaarhi def link dFloat               Float
344071d4279SBram Moolenaarhi def link dHexFloat            Float
345071d4279SBram Moolenaarhi def link dDebug               Debug
346071d4279SBram Moolenaarhi def link dBranch              Conditional
347071d4279SBram Moolenaarhi def link dConditional         Conditional
348071d4279SBram Moolenaarhi def link dLabel               Label
349071d4279SBram Moolenaarhi def link dUserLabel           Label
350071d4279SBram Moolenaarhi def link dRepeat              Repeat
351071d4279SBram Moolenaarhi def link dExceptions          Exception
352071d4279SBram Moolenaarhi def link dAssert              Statement
353071d4279SBram Moolenaarhi def link dStatement           Statement
354071d4279SBram Moolenaarhi def link dScopeDecl           dStorageClass
355071d4279SBram Moolenaarhi def link dStorageClass        StorageClass
356071d4279SBram Moolenaarhi def link dBoolean             Boolean
357071d4279SBram Moolenaarhi def link dUnicode             Special
3589db9d9ceSBram Moolenaarhi def link dTokenStringBrack    String
3599db9d9ceSBram Moolenaarhi def link dHereString          String
3609db9d9ceSBram Moolenaarhi def link dNestString          String
3619db9d9ceSBram Moolenaarhi def link dDelimString         String
362071d4279SBram Moolenaarhi def link dRawString           String
363071d4279SBram Moolenaarhi def link dString              String
364071d4279SBram Moolenaarhi def link dHexString           String
365071d4279SBram Moolenaarhi def link dCharacter           Character
366071d4279SBram Moolenaarhi def link dEscSequence         SpecialChar
367*681baaf4SBram Moolenaarhi def link dFormat              SpecialChar
368071d4279SBram Moolenaarhi def link dSpecialCharError    Error
369071d4279SBram Moolenaarhi def link dOctalError          Error
370071d4279SBram Moolenaarhi def link dOperator            Operator
3719db9d9ceSBram Moolenaarhi def link dOpOverload          Identifier
372071d4279SBram Moolenaarhi def link dConstant            Constant
373071d4279SBram Moolenaarhi def link dTypedef             Typedef
3749db9d9ceSBram Moolenaarhi def link dEnum                Structure
375071d4279SBram Moolenaarhi def link dStructure           Structure
376071d4279SBram Moolenaarhi def link dTodo                Todo
377071d4279SBram Moolenaarhi def link dType                Type
378071d4279SBram Moolenaarhi def link dLineComment         Comment
379071d4279SBram Moolenaarhi def link dBlockComment        Comment
380071d4279SBram Moolenaarhi def link dNestedComment       Comment
381b1332080SBram Moolenaarhi def link dCommentError        Error
382b1332080SBram Moolenaarhi def link dNestedCommentError  Error
383b1332080SBram Moolenaarhi def link dCommentStartError   Error
384071d4279SBram Moolenaarhi def link dExternal            Include
3859db9d9ceSBram Moolenaarhi def link dAnnotation          PreProc
38624ea3babSBram Moolenaarhi def link dSharpBang           PreProc
38724ea3babSBram Moolenaarhi def link dAttribute           StorageClass
38824ea3babSBram Moolenaarhi def link dIdentifier          Identifier
38924ea3babSBram Moolenaarhi def link dVersion             dStatement
3906be7f873SBram Moolenaarhi def link dVersionIdentifier   Identifier
3916be7f873SBram Moolenaarhi def link dScopeIdentifier     Identifier
3926be7f873SBram Moolenaarhi def link dTraitsIdentifier    Identifier
393543b7ef7SBram Moolenaarhi def link dPragma              PreProc
394543b7ef7SBram Moolenaarhi def link dPragmaIdentifier    Identifier
3956be7f873SBram Moolenaarhi def link dExtern              dExternal
3966be7f873SBram Moolenaarhi def link dExternIdentifier    Identifier
397071d4279SBram Moolenaar
39824ea3babSBram Moolenaar" Marks contents of the asm statment body as special
39924ea3babSBram Moolenaar
40024ea3babSBram Moolenaarsyn match dAsmStatement "\<asm\>"
401543b7ef7SBram Moolenaarsyn region dAsmBody start="asm[\n]*\s*{"hs=e+1 end="}"he=e-1 contains=dAsmStatement,dAsmOpCode,@dComment,DUserLabel
40224ea3babSBram Moolenaar
40324ea3babSBram Moolenaarhi def link dAsmBody dUnicode
40424ea3babSBram Moolenaarhi def link dAsmStatement dStatement
40524ea3babSBram Moolenaarhi def link dAsmOpCode Identifier
40624ea3babSBram Moolenaar
407543b7ef7SBram Moolenaarsyn keyword dAsmOpCode contained	aaa		aad		aam		aas
408543b7ef7SBram Moolenaarsyn keyword dAsmOpCode contained	add		addpd		addps		addsd
409543b7ef7SBram Moolenaarsyn keyword dAsmOpCode contained	and		andnpd		andnps		andpd
410543b7ef7SBram Moolenaarsyn keyword dAsmOpCode contained	arpl		bound		bsf		bsr
411543b7ef7SBram Moolenaarsyn keyword dAsmOpCode contained	bt		btc		btr		bts
412543b7ef7SBram Moolenaarsyn keyword dAsmOpCode contained	call		bswap		andps		addss
413543b7ef7SBram Moolenaarsyn keyword dAsmOpCode contained	cbw		cdq		clc		cld
414543b7ef7SBram Moolenaarsyn keyword dAsmOpCode contained	cli		clts		cmc		cmova
415543b7ef7SBram Moolenaarsyn keyword dAsmOpCode contained	cmovb		cmovbe		cmovc		cmove
416543b7ef7SBram Moolenaarsyn keyword dAsmOpCode contained	cmovge		cmovl		cmovle		cmovna
417543b7ef7SBram Moolenaarsyn keyword dAsmOpCode contained	cmovnae		cmovg		cmovae		clflush
418543b7ef7SBram Moolenaarsyn keyword dAsmOpCode contained	cmovnb		cmovnbe		cmovnc		cmovne
419543b7ef7SBram Moolenaarsyn keyword dAsmOpCode contained	cmovnge		cmovnl		cmovnle		cmovno
420543b7ef7SBram Moolenaarsyn keyword dAsmOpCode contained	cmovns		cmovnz		cmovo		cmovp
421543b7ef7SBram Moolenaarsyn keyword dAsmOpCode contained	cmovpo		cmovs		cmovz		cmp
422543b7ef7SBram Moolenaarsyn keyword dAsmOpCode contained	cmppd		cmovpe		cmovnp		cmovng
423543b7ef7SBram Moolenaarsyn keyword dAsmOpCode contained	cmpps		cmps		cmpsb		cmpsd
424543b7ef7SBram Moolenaarsyn keyword dAsmOpCode contained	cmpsw		cmpxch8b	cmpxchg		comisd
425543b7ef7SBram Moolenaarsyn keyword dAsmOpCode contained	cpuid		cvtdq2pd	cvtdq2ps	cvtpd2dq
426543b7ef7SBram Moolenaarsyn keyword dAsmOpCode contained	cvtpd2ps	cvtpi2pd	cvtpi2ps	cvtps2dq
427543b7ef7SBram Moolenaarsyn keyword dAsmOpCode contained	cvtps2pd	cvtpd2pi	comiss		cmpss
428543b7ef7SBram Moolenaarsyn keyword dAsmOpCode contained	cvtps2pi	cvtsd2si	cvtsd2ss	cvtsi2sd
429543b7ef7SBram Moolenaarsyn keyword dAsmOpCode contained	cvtss2sd	cvtss2si	cvttpd2dq	cvttpd2pi
430543b7ef7SBram Moolenaarsyn keyword dAsmOpCode contained	cvttps2pi	cvttsd2si	cvttss2si	cwd
431543b7ef7SBram Moolenaarsyn keyword dAsmOpCode contained	da		daa		das		db
432543b7ef7SBram Moolenaarsyn keyword dAsmOpCode contained	dd		cwde		cvttps2dq	cvtsi2ss
433543b7ef7SBram Moolenaarsyn keyword dAsmOpCode contained	de		dec		df		di
434543b7ef7SBram Moolenaarsyn keyword dAsmOpCode contained	divpd		divps		divsd		divss
435543b7ef7SBram Moolenaarsyn keyword dAsmOpCode contained	dq		ds		dt		dw
436543b7ef7SBram Moolenaarsyn keyword dAsmOpCode contained	enter		f2xm1		fabs		fadd
437543b7ef7SBram Moolenaarsyn keyword dAsmOpCode contained	faddp		emms		dl		div
438543b7ef7SBram Moolenaarsyn keyword dAsmOpCode contained	fbld		fbstp		fchs		fclex
439543b7ef7SBram Moolenaarsyn keyword dAsmOpCode contained	fcmovbe		fcmove		fcmovnb		fcmovnbe
440543b7ef7SBram Moolenaarsyn keyword dAsmOpCode contained	fcmovnu		fcmovu		fcom		fcomi
441543b7ef7SBram Moolenaarsyn keyword dAsmOpCode contained	fcomp		fcompp		fcos		fdecstp
442543b7ef7SBram Moolenaarsyn keyword dAsmOpCode contained	fdisi		fcomip		fcmovne		fcmovb
443543b7ef7SBram Moolenaarsyn keyword dAsmOpCode contained	fdiv		fdivp		fdivr		fdivrp
444543b7ef7SBram Moolenaarsyn keyword dAsmOpCode contained	ffree		fiadd		ficom		ficomp
445543b7ef7SBram Moolenaarsyn keyword dAsmOpCode contained	fidivr		fild		fimul		fincstp
446543b7ef7SBram Moolenaarsyn keyword dAsmOpCode contained	fist		fistp		fisub		fisubr
447543b7ef7SBram Moolenaarsyn keyword dAsmOpCode contained	fld		finit		fidiv		feni
448543b7ef7SBram Moolenaarsyn keyword dAsmOpCode contained	fld1		fldcw		fldenv		fldl2e
449543b7ef7SBram Moolenaarsyn keyword dAsmOpCode contained	fldlg2		fldln2		fldpi		fldz
450543b7ef7SBram Moolenaarsyn keyword dAsmOpCode contained	fmulp		fnclex		fndisi		fneni
451543b7ef7SBram Moolenaarsyn keyword dAsmOpCode contained	fnop		fnsave		fnstcw		fnstenv
452543b7ef7SBram Moolenaarsyn keyword dAsmOpCode contained	fnstsw		fninit		fmul		fldl2t
453543b7ef7SBram Moolenaarsyn keyword dAsmOpCode contained	fpatan		fprem		fprem1		fptan
454543b7ef7SBram Moolenaarsyn keyword dAsmOpCode contained	frstor		fsave		fscale		fsetpm
455543b7ef7SBram Moolenaarsyn keyword dAsmOpCode contained	fsincos		fsqrt		fst		fstcw
456543b7ef7SBram Moolenaarsyn keyword dAsmOpCode contained	fstp		fstsw		fsub		fsubp
457543b7ef7SBram Moolenaarsyn keyword dAsmOpCode contained	fsubr		fstenv		fsin		frndint
458543b7ef7SBram Moolenaarsyn keyword dAsmOpCode contained	fsubrp		ftst		fucom		fucomi
459543b7ef7SBram Moolenaarsyn keyword dAsmOpCode contained	fucomp		fucompp		fwait		fxam
460543b7ef7SBram Moolenaarsyn keyword dAsmOpCode contained	fxrstor		fxsave		fxtract		fyl2x
461543b7ef7SBram Moolenaarsyn keyword dAsmOpCode contained	hlt		idiv		imul		in
462543b7ef7SBram Moolenaarsyn keyword dAsmOpCode contained	inc		fyl2xp1		fxch		fucomip
463543b7ef7SBram Moolenaarsyn keyword dAsmOpCode contained	ins		insb		insd		insw
464543b7ef7SBram Moolenaarsyn keyword dAsmOpCode contained	into		invd		invlpg		iret
465543b7ef7SBram Moolenaarsyn keyword dAsmOpCode contained	ja		jae		jb		jbe
466543b7ef7SBram Moolenaarsyn keyword dAsmOpCode contained	jcxz		je		jecxz		jg
467543b7ef7SBram Moolenaarsyn keyword dAsmOpCode contained	jge		jc		iretd		int
468543b7ef7SBram Moolenaarsyn keyword dAsmOpCode contained	jl		jle		jmp		jna
469543b7ef7SBram Moolenaarsyn keyword dAsmOpCode contained	jnb		jnbe		jnc		jne
470543b7ef7SBram Moolenaarsyn keyword dAsmOpCode contained	jnge		jnl		jnle		jno
471543b7ef7SBram Moolenaarsyn keyword dAsmOpCode contained	jns		jnz		jo		jp
472543b7ef7SBram Moolenaarsyn keyword dAsmOpCode contained	jpe		jnp		jng		jnae
473543b7ef7SBram Moolenaarsyn keyword dAsmOpCode contained	jpo		js		jz		lahf
474543b7ef7SBram Moolenaarsyn keyword dAsmOpCode contained	ldmxcsr		lds		lea		leave
475543b7ef7SBram Moolenaarsyn keyword dAsmOpCode contained	lfence		lfs		lgdt		lgs
476543b7ef7SBram Moolenaarsyn keyword dAsmOpCode contained	lldt		lmsw		lock		lods
477543b7ef7SBram Moolenaarsyn keyword dAsmOpCode contained	lodsb		lidt		les		lar
478543b7ef7SBram Moolenaarsyn keyword dAsmOpCode contained	lodsd		lodsw		loop		loope
479543b7ef7SBram Moolenaarsyn keyword dAsmOpCode contained	loopnz		loopz		lsl		lss
480543b7ef7SBram Moolenaarsyn keyword dAsmOpCode contained	maskmovdqu	maskmovq	maxpd		maxps
481543b7ef7SBram Moolenaarsyn keyword dAsmOpCode contained	maxss		mfence		minpd		minps
482543b7ef7SBram Moolenaarsyn keyword dAsmOpCode contained	minsd		maxsd		ltr		loopne
483543b7ef7SBram Moolenaarsyn keyword dAsmOpCode contained	minss		mov		movapd		movaps
484543b7ef7SBram Moolenaarsyn keyword dAsmOpCode contained	movdq2q		movdqa		movdqu		movhlps
485543b7ef7SBram Moolenaarsyn keyword dAsmOpCode contained	movhps		movlhps		movlpd		movlps
486543b7ef7SBram Moolenaarsyn keyword dAsmOpCode contained	movmskps	movntdq		movnti		movntpd
487543b7ef7SBram Moolenaarsyn keyword dAsmOpCode contained	movntps		movmskpd	movhpd		movd
488543b7ef7SBram Moolenaarsyn keyword dAsmOpCode contained	movntq		movq		movq2dq		movs
489543b7ef7SBram Moolenaarsyn keyword dAsmOpCode contained	movsd		movss		movsw		movsx
490543b7ef7SBram Moolenaarsyn keyword dAsmOpCode contained	movups		movzx		mul		mulpd
491543b7ef7SBram Moolenaarsyn keyword dAsmOpCode contained	mulsd		mulss		neg		nop
492543b7ef7SBram Moolenaarsyn keyword dAsmOpCode contained	not		mulps		movupd		movsb
493543b7ef7SBram Moolenaarsyn keyword dAsmOpCode contained	or		orpd		orps		out
494543b7ef7SBram Moolenaarsyn keyword dAsmOpCode contained	outsb		outsd		outsw		packssdw
495543b7ef7SBram Moolenaarsyn keyword dAsmOpCode contained	packuswb	paddb		paddd		paddq
496543b7ef7SBram Moolenaarsyn keyword dAsmOpCode contained	paddsw		paddusb		paddusw		paddw
497543b7ef7SBram Moolenaarsyn keyword dAsmOpCode contained	pand		paddsb		packsswb	outs
498543b7ef7SBram Moolenaarsyn keyword dAsmOpCode contained	pandn		pavgb		pavgw		pcmpeqb
499543b7ef7SBram Moolenaarsyn keyword dAsmOpCode contained	pcmpeqw		pcmpgtb		pcmpgtd		pcmpgtw
500543b7ef7SBram Moolenaarsyn keyword dAsmOpCode contained	pinsrw		pmaddwd		pmaxsw		pmaxub
501543b7ef7SBram Moolenaarsyn keyword dAsmOpCode contained	pminub		pmovmskb	pmulhuw		pmulhw
502543b7ef7SBram Moolenaarsyn keyword dAsmOpCode contained	pmullw		pminsw		pextrw		pcmpeqd
503543b7ef7SBram Moolenaarsyn keyword dAsmOpCode contained	pmuludq		pop		popa		popad
504543b7ef7SBram Moolenaarsyn keyword dAsmOpCode contained	popfd		por		prefetchnta	prefetcht0
505543b7ef7SBram Moolenaarsyn keyword dAsmOpCode contained	prefetcht2	psadbw		pshufd		pshufhw
506543b7ef7SBram Moolenaarsyn keyword dAsmOpCode contained	pshufw		pslld		pslldq		psllq
507543b7ef7SBram Moolenaarsyn keyword dAsmOpCode contained	psllw		pshuflw		prefetcht1	popf
508543b7ef7SBram Moolenaarsyn keyword dAsmOpCode contained	psrad		psraw		psrld		psrldq
509543b7ef7SBram Moolenaarsyn keyword dAsmOpCode contained	psrlw		psubb		psubd		psubq
510543b7ef7SBram Moolenaarsyn keyword dAsmOpCode contained	psubsw		psubusb		psubusw		psubw
511543b7ef7SBram Moolenaarsyn keyword dAsmOpCode contained	punpckhdq	punpckhqdq	punpckhwd	punpcklbw
512543b7ef7SBram Moolenaarsyn keyword dAsmOpCode contained	punpckldq	punpckhbw	psubsb		psrlq
513543b7ef7SBram Moolenaarsyn keyword dAsmOpCode contained	punpcklqdq	punpcklwd	push		pusha
514543b7ef7SBram Moolenaarsyn keyword dAsmOpCode contained	pushf		pushfd		pxor		rcl
515543b7ef7SBram Moolenaarsyn keyword dAsmOpCode contained	rcpss		rcr		rdmsr		rdpmc
516543b7ef7SBram Moolenaarsyn keyword dAsmOpCode contained	rep		repe		repne		repnz
517543b7ef7SBram Moolenaarsyn keyword dAsmOpCode contained	repz		rdtsc		rcpps		pushad
518543b7ef7SBram Moolenaarsyn keyword dAsmOpCode contained	ret		retf		rol		ror
519543b7ef7SBram Moolenaarsyn keyword dAsmOpCode contained	rsqrtps		rsqrtss		sahf		sal
520543b7ef7SBram Moolenaarsyn keyword dAsmOpCode contained	sbb		scas		scasb		scasd
521543b7ef7SBram Moolenaarsyn keyword dAsmOpCode contained	seta		setae		setb		setbe
522543b7ef7SBram Moolenaarsyn keyword dAsmOpCode contained	setc		scasw		sar		rsm
523543b7ef7SBram Moolenaarsyn keyword dAsmOpCode contained	sete		setg		setge		setl
524543b7ef7SBram Moolenaarsyn keyword dAsmOpCode contained	setna		setnae		setnb		setnbe
525543b7ef7SBram Moolenaarsyn keyword dAsmOpCode contained	setne		setng		setnge		setnl
526543b7ef7SBram Moolenaarsyn keyword dAsmOpCode contained	setno		setnp		setns		setnz
527543b7ef7SBram Moolenaarsyn keyword dAsmOpCode contained	seto		setnle		setnc		setle
528543b7ef7SBram Moolenaarsyn keyword dAsmOpCode contained	setp		setpe		setpo		sets
529543b7ef7SBram Moolenaarsyn keyword dAsmOpCode contained	sfence		sgdt		shl		shld
530543b7ef7SBram Moolenaarsyn keyword dAsmOpCode contained	shrd		shufpd		shufps		sidt
531543b7ef7SBram Moolenaarsyn keyword dAsmOpCode contained	smsw		sqrtpd		sqrtps		sqrtsd
532543b7ef7SBram Moolenaarsyn keyword dAsmOpCode contained	sqrtss		sldt		shr		setz
533543b7ef7SBram Moolenaarsyn keyword dAsmOpCode contained	stc		std		sti		stmxcsr
534543b7ef7SBram Moolenaarsyn keyword dAsmOpCode contained	stosb		stosd		stosw		str
535543b7ef7SBram Moolenaarsyn keyword dAsmOpCode contained	subpd		subps		subsd		subss
536543b7ef7SBram Moolenaarsyn keyword dAsmOpCode contained	sysexit		test		ucomisd		ucomiss
537543b7ef7SBram Moolenaarsyn keyword dAsmOpCode contained	ud2		sysenter	sub		stos
538543b7ef7SBram Moolenaarsyn keyword dAsmOpCode contained	unpckhpd	unpckhps	unpcklpd	unpcklps
539543b7ef7SBram Moolenaarsyn keyword dAsmOpCode contained	verw		wbinvd		wrmsr		xadd
540543b7ef7SBram Moolenaarsyn keyword dAsmOpCode contained	xchg		xlatb		xor		xorpd
541543b7ef7SBram Moolenaarsyn keyword dAsmOpCode contained	xorps		pfrcpit1	pfmin		movddup
542543b7ef7SBram Moolenaarsyn keyword dAsmOpCode contained	addsubpd	addsubps	fisttp		haddps
543543b7ef7SBram Moolenaarsyn keyword dAsmOpCode contained	hsubpd		hsubps		lddqu		monitor
544543b7ef7SBram Moolenaarsyn keyword dAsmOpCode contained	haddpd		xlat		wait		verr
545543b7ef7SBram Moolenaarsyn keyword dAsmOpCode contained	movshdup	movsldup	mwait		pfcmpeq
546543b7ef7SBram Moolenaarsyn keyword dAsmOpCode contained	pavgusb		pf2id		pfacc		pfadd
547543b7ef7SBram Moolenaarsyn keyword dAsmOpCode contained	pfcmpge		pfcmpgt		pfmax		pfmul
548543b7ef7SBram Moolenaarsyn keyword dAsmOpCode contained	pfnacc		pfpnacc		pfrcp		pfrcpit1
549543b7ef7SBram Moolenaarsyn keyword dAsmOpCode contained	pfrsqit1	pfrsqrt		pfsub		pfsubr
550543b7ef7SBram Moolenaarsyn keyword dAsmOpCode contained	pmulhrw 	pswapd		syscall		sysret
551543b7ef7SBram Moolenaarsyn keyword dAsmOpCode contained	vpmuldq		xgetbv		cmpxchg8b	cmpxchg16b
552543b7ef7SBram Moolenaarsyn keyword dAsmOpCode contained	pabsb		pabsd		pabsw		palignr
553543b7ef7SBram Moolenaarsyn keyword dAsmOpCode contained	phaddd		phaddsw		phaddw		phsubd
554543b7ef7SBram Moolenaarsyn keyword dAsmOpCode contained	phsubsw		phsubw		pmaddubsw	pmulhrsw
555543b7ef7SBram Moolenaarsyn keyword dAsmOpCode contained	pshufb		psignb		psignd		psignw
556543b7ef7SBram Moolenaarsyn keyword dAsmOpCode contained	popfq		pushfq		blendpd		blendps
557543b7ef7SBram Moolenaarsyn keyword dAsmOpCode contained	blendvpd	blendvps	extractps	insertps
558543b7ef7SBram Moolenaarsyn keyword dAsmOpCode contained	movntdqa	mpsadbw		packusdw	pblendvb
559543b7ef7SBram Moolenaarsyn keyword dAsmOpCode contained	pblendw		pcmpeqq		pextrb		pextrd
560543b7ef7SBram Moolenaarsyn keyword dAsmOpCode contained	pextrq		phminposuw	pinsrb		pinsrd
561543b7ef7SBram Moolenaarsyn keyword dAsmOpCode contained	pinsrq		pmaxsb		pmaxsd		pmaxud
562543b7ef7SBram Moolenaarsyn keyword dAsmOpCode contained	pmaxuw		pminsb		pminsd		pminud
563543b7ef7SBram Moolenaarsyn keyword dAsmOpCode contained	pminuw		pmulld		ptest		roundpd
564543b7ef7SBram Moolenaarsyn keyword dAsmOpCode contained	roundps		roundsd		roundss		pmuldq
565543b7ef7SBram Moolenaarsyn keyword dAsmOpCode contained	pmovsxbd	pmovsxdq	pmovzxbq	pmovzxdq
566543b7ef7SBram Moolenaarsyn keyword dAsmOpCode contained	pmovsxbq	pmovsxwd	pmovzxbq	pmovzxwd
567543b7ef7SBram Moolenaarsyn keyword dAsmOpCode contained	pmovsxbw	pmovsxwq	pmovzxbw	pmovzxwq
568543b7ef7SBram Moolenaarsyn keyword dAsmOpCode contained	crc32		pcmpestri	pcmpestrm	pcmpgtq
569543b7ef7SBram Moolenaarsyn keyword dAsmOpCode contained	pcmpistri	pcmpistrm	popcnt		pi2fd
570543b7ef7SBram Moolenaarsyn keyword dAsmOpCode contained	adc
57124ea3babSBram Moolenaar
5726be7f873SBram Moolenaarlet &cpo = s:cpo_save
5736be7f873SBram Moolenaarunlet s:cpo_save
574