1071d4279SBram Moolenaar" Vim syntax file 2071d4279SBram Moolenaar" Language: Windows Registry export with regedit (*.reg) 332efaf61SBram Moolenaar" Maintainer: Dominique Stéphan ([email protected]) 432efaf61SBram Moolenaar" URL: http://www.mggen.com/vim/syntax/registry.zip (doesn't work) 532efaf61SBram Moolenaar" Last change: 2014 Oct 31 632efaf61SBram Moolenaar" Included patch from Alexander A. Ulitin 7071d4279SBram Moolenaar 8071d4279SBram Moolenaar" clear any unwanted syntax defs 989bcfda6SBram Moolenaar" quit when a syntax file was already loaded 1089bcfda6SBram Moolenaarif exists("b:current_syntax") 11071d4279SBram Moolenaar finish 12071d4279SBram Moolenaarendif 13071d4279SBram Moolenaar 14071d4279SBram Moolenaar" shut case off 15071d4279SBram Moolenaarsyn case ignore 16071d4279SBram Moolenaar 17071d4279SBram Moolenaar" Head of regedit .reg files, it's REGEDIT4 on Win9#/NT 1832efaf61SBram Moolenaarsyn match registryHead "^REGEDIT[0-9]*\s*$\|^Windows Registry Editor Version \d*\.\d*\s*$" 19071d4279SBram Moolenaar 20071d4279SBram Moolenaar" Comment 21071d4279SBram Moolenaarsyn match registryComment "^;.*$" 22071d4279SBram Moolenaar 23071d4279SBram Moolenaar" Registry Key constant 24071d4279SBram Moolenaarsyn keyword registryHKEY HKEY_LOCAL_MACHINE HKEY_CLASSES_ROOT HKEY_CURRENT_USER 25071d4279SBram Moolenaarsyn keyword registryHKEY HKEY_USERS HKEY_CURRENT_CONFIG HKEY_DYN_DATA 26071d4279SBram Moolenaar" Registry Key shortcuts 27071d4279SBram Moolenaarsyn keyword registryHKEY HKLM HKCR HKCU HKU HKCC HKDD 28071d4279SBram Moolenaar 29071d4279SBram Moolenaar" Some values often found in the registry 30071d4279SBram Moolenaar" GUID (Global Unique IDentifier) 31071d4279SBram Moolenaarsyn match registryGUID "{[0-9A-Fa-f]\{8}\-[0-9A-Fa-f]\{4}\-[0-9A-Fa-f]\{4}\-[0-9A-Fa-f]\{4}\-[0-9A-Fa-f]\{12}}" contains=registrySpecial 32071d4279SBram Moolenaar 33071d4279SBram Moolenaar" Disk 34071d4279SBram Moolenaar" syn match registryDisk "[a-zA-Z]:\\\\" 35071d4279SBram Moolenaar 36071d4279SBram Moolenaar" Special and Separator characters 37071d4279SBram Moolenaarsyn match registrySpecial "\\" 38071d4279SBram Moolenaarsyn match registrySpecial "\\\\" 39071d4279SBram Moolenaarsyn match registrySpecial "\\\"" 40071d4279SBram Moolenaarsyn match registrySpecial "\." 41071d4279SBram Moolenaarsyn match registrySpecial "," 42071d4279SBram Moolenaarsyn match registrySpecial "\/" 43071d4279SBram Moolenaarsyn match registrySpecial ":" 44071d4279SBram Moolenaarsyn match registrySpecial "-" 45071d4279SBram Moolenaar 46071d4279SBram Moolenaar" String 47071d4279SBram Moolenaarsyn match registryString "\".*\"" contains=registryGUID,registrySpecial 48071d4279SBram Moolenaar 49071d4279SBram Moolenaar" Path 50071d4279SBram Moolenaarsyn region registryPath start="\[" end="\]" contains=registryHKEY,registryGUID,registrySpecial 51071d4279SBram Moolenaar 52071d4279SBram Moolenaar" Path to remove 53071d4279SBram Moolenaar" like preceding path but with a "-" at begin 54071d4279SBram Moolenaarsyn region registryRemove start="\[\-" end="\]" contains=registryHKEY,registryGUID,registrySpecial 55071d4279SBram Moolenaar 56071d4279SBram Moolenaar" Subkey 57071d4279SBram Moolenaarsyn match registrySubKey "^\".*\"=" 58071d4279SBram Moolenaar" Default value 5932efaf61SBram Moolenaarsyn match registrySubKey "^@=" 60071d4279SBram Moolenaar 61071d4279SBram Moolenaar" Numbers 62071d4279SBram Moolenaar 63071d4279SBram Moolenaar" Hex or Binary 64071d4279SBram Moolenaar" The format can be precised between () : 65071d4279SBram Moolenaar" 0 REG_NONE 66071d4279SBram Moolenaar" 1 REG_SZ 67071d4279SBram Moolenaar" 2 REG_EXPAND_SZ 68071d4279SBram Moolenaar" 3 REG_BINARY 69071d4279SBram Moolenaar" 4 REG_DWORD, REG_DWORD_LITTLE_ENDIAN 70071d4279SBram Moolenaar" 5 REG_DWORD_BIG_ENDIAN 71071d4279SBram Moolenaar" 6 REG_LINK 72071d4279SBram Moolenaar" 7 REG_MULTI_SZ 73071d4279SBram Moolenaar" 8 REG_RESOURCE_LIST 74071d4279SBram Moolenaar" 9 REG_FULL_RESOURCE_DESCRIPTOR 75071d4279SBram Moolenaar" 10 REG_RESOURCE_REQUIREMENTS_LIST 76071d4279SBram Moolenaar" The value can take several lines, if \ ends the line 77071d4279SBram Moolenaar" The limit to 999 matches is arbitrary, it avoids Vim crashing on a very long 78071d4279SBram Moolenaar" line of hex values that ends in a comma. 79071d4279SBram Moolenaar"syn match registryHex "hex\(([0-9]\{0,2})\)\=:\([0-9a-fA-F]\{2},\)\{0,999}\([0-9a-fA-F]\{2}\|\\\)$" contains=registrySpecial 80071d4279SBram Moolenaarsyn match registryHex "hex\(([0-9]\{0,2})\)\=:\([0-9a-fA-F]\{2},\)*\([0-9a-fA-F]\{2}\|\\\)$" contains=registrySpecial 81071d4279SBram Moolenaarsyn match registryHex "^\s*\([0-9a-fA-F]\{2},\)\{0,999}\([0-9a-fA-F]\{2}\|\\\)$" contains=registrySpecial 82071d4279SBram Moolenaar" Dword (32 bits) 83071d4279SBram Moolenaarsyn match registryDword "dword:[0-9a-fA-F]\{8}$" contains=registrySpecial 84071d4279SBram Moolenaar 85071d4279SBram Moolenaar 86071d4279SBram Moolenaar" The default methods for highlighting. Can be overridden later 87*f37506f6SBram Moolenaarhi def link registryComment Comment 88*f37506f6SBram Moolenaarhi def link registryHead Constant 89*f37506f6SBram Moolenaarhi def link registryHKEY Constant 90*f37506f6SBram Moolenaarhi def link registryPath Special 91*f37506f6SBram Moolenaarhi def link registryRemove PreProc 92*f37506f6SBram Moolenaarhi def link registryGUID Identifier 93*f37506f6SBram Moolenaarhi def link registrySpecial Special 94*f37506f6SBram Moolenaarhi def link registrySubKey Type 95*f37506f6SBram Moolenaarhi def link registryString String 96*f37506f6SBram Moolenaarhi def link registryHex Number 97*f37506f6SBram Moolenaarhi def link registryDword Number 98071d4279SBram Moolenaar 99071d4279SBram Moolenaar 100071d4279SBram Moolenaar 101071d4279SBram Moolenaarlet b:current_syntax = "registry" 102071d4279SBram Moolenaar 103071d4279SBram Moolenaar" vim:ts=8 104