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