1" Vim syntax file 2" Language: Windows Registry export with regedit (*.reg) 3" Maintainer: Dominique St�phan (dominique@mggen.com) 4" URL: http://www.mggen.com/vim/syntax/registry.zip 5" Last change: 2004 Apr 23 6 7" clear any unwanted syntax defs 8" For version 5.x: Clear all syntax items 9" For version 6.x: Quit when a syntax file was already loaded 10if version < 600 11 syntax clear 12elseif exists("b:current_syntax") 13 finish 14endif 15 16" shut case off 17syn case ignore 18 19" Head of regedit .reg files, it's REGEDIT4 on Win9#/NT 20syn match registryHead "^REGEDIT[0-9]*$" 21 22" Comment 23syn match registryComment "^;.*$" 24 25" Registry Key constant 26syn keyword registryHKEY HKEY_LOCAL_MACHINE HKEY_CLASSES_ROOT HKEY_CURRENT_USER 27syn keyword registryHKEY HKEY_USERS HKEY_CURRENT_CONFIG HKEY_DYN_DATA 28" Registry Key shortcuts 29syn keyword registryHKEY HKLM HKCR HKCU HKU HKCC HKDD 30 31" Some values often found in the registry 32" GUID (Global Unique IDentifier) 33syn 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 34 35" Disk 36" syn match registryDisk "[a-zA-Z]:\\\\" 37 38" Special and Separator characters 39syn match registrySpecial "\\" 40syn match registrySpecial "\\\\" 41syn match registrySpecial "\\\"" 42syn match registrySpecial "\." 43syn match registrySpecial "," 44syn match registrySpecial "\/" 45syn match registrySpecial ":" 46syn match registrySpecial "-" 47 48" String 49syn match registryString "\".*\"" contains=registryGUID,registrySpecial 50 51" Path 52syn region registryPath start="\[" end="\]" contains=registryHKEY,registryGUID,registrySpecial 53 54" Path to remove 55" like preceding path but with a "-" at begin 56syn region registryRemove start="\[\-" end="\]" contains=registryHKEY,registryGUID,registrySpecial 57 58" Subkey 59syn match registrySubKey "^\".*\"=" 60" Default value 61syn match registrySubKey "^\@=" 62 63" Numbers 64 65" Hex or Binary 66" The format can be precised between () : 67" 0 REG_NONE 68" 1 REG_SZ 69" 2 REG_EXPAND_SZ 70" 3 REG_BINARY 71" 4 REG_DWORD, REG_DWORD_LITTLE_ENDIAN 72" 5 REG_DWORD_BIG_ENDIAN 73" 6 REG_LINK 74" 7 REG_MULTI_SZ 75" 8 REG_RESOURCE_LIST 76" 9 REG_FULL_RESOURCE_DESCRIPTOR 77" 10 REG_RESOURCE_REQUIREMENTS_LIST 78" The value can take several lines, if \ ends the line 79" The limit to 999 matches is arbitrary, it avoids Vim crashing on a very long 80" line of hex values that ends in a comma. 81"syn match registryHex "hex\(([0-9]\{0,2})\)\=:\([0-9a-fA-F]\{2},\)\{0,999}\([0-9a-fA-F]\{2}\|\\\)$" contains=registrySpecial 82syn match registryHex "hex\(([0-9]\{0,2})\)\=:\([0-9a-fA-F]\{2},\)*\([0-9a-fA-F]\{2}\|\\\)$" contains=registrySpecial 83syn match registryHex "^\s*\([0-9a-fA-F]\{2},\)\{0,999}\([0-9a-fA-F]\{2}\|\\\)$" contains=registrySpecial 84" Dword (32 bits) 85syn match registryDword "dword:[0-9a-fA-F]\{8}$" contains=registrySpecial 86 87if version >= 508 || !exists("did_registry_syntax_inits") 88 if version < 508 89 let did_registry_syntax_inits = 1 90 command -nargs=+ HiLink hi link <args> 91 else 92 command -nargs=+ HiLink hi def link <args> 93 endif 94 95" The default methods for highlighting. Can be overridden later 96 HiLink registryComment Comment 97 HiLink registryHead Constant 98 HiLink registryHKEY Constant 99 HiLink registryPath Special 100 HiLink registryRemove PreProc 101 HiLink registryGUID Identifier 102 HiLink registrySpecial Special 103 HiLink registrySubKey Type 104 HiLink registryString String 105 HiLink registryHex Number 106 HiLink registryDword Number 107 108 delcommand HiLink 109endif 110 111 112let b:current_syntax = "registry" 113 114" vim:ts=8 115