1" Vim syntax file
2" Language:	Software Distributor product specification file
3"		(POSIX 1387.2-1995).
4" Maintainer:	Rex Barzee <rex_barzee@hp.com>
5" Last change:	25 Apr 2001
6
7" quit when a syntax file was already loaded
8if exists("b:current_syntax")
9  finish
10endif
11
12" Product specification files are case sensitive
13syn case match
14
15syn keyword psfObject bundle category control_file depot distribution
16syn keyword psfObject end file fileset host installed_software media
17syn keyword psfObject product root subproduct vendor
18
19syn match  psfUnquotString +[^"# 	][^#]*+ contained
20syn region psfQuotString   start=+"+ skip=+\\"+ end=+"+ contained
21
22syn match  psfObjTag    "\<[-_+A-Z0-9a-z]\+\(\.[-_+A-Z0-9a-z]\+\)*" contained
23syn match  psfAttAbbrev ",\<\(fa\|fr\|[aclqrv]\)\(<\|>\|<=\|>=\|=\|==\)[^,]\+" contained
24syn match  psfObjTags   "\<[-_+A-Z0-9a-z]\+\(\.[-_+A-Z0-9a-z]\+\)*\(\s\+\<[-_+A-Z0-9a-z]\+\(\.[-_+A-Z0-9a-z]\+\)*\)*" contained
25
26syn match  psfNumber    "\<\d\+\>" contained
27syn match  psfFloat     "\<\d\+\>\(\.\<\d\+\>\)*" contained
28
29syn match  psfLongDate  "\<\d\d\d\d\d\d\d\d\d\d\d\d\.\d\d\>" contained
30
31syn keyword psfState    available configured corrupt installed transient contained
32syn keyword psfPState   applied committed superseded contained
33
34syn keyword psfBoolean  false true contained
35
36
37"Some of the attributes covered by attUnquotString and attQuotString:
38" architecture category_tag control_directory copyright
39" create_date description directory file_permissions install_source
40" install_type location machine_type mod_date number os_name os_release
41" os_version pose_as_os_name pose_as_os_release readme revision
42" share_link title vendor_tag
43syn region psfAttUnquotString matchgroup=psfAttrib start=~^\s*[^# 	]\+\s\+[^#" 	]~rs=e-1 contains=psfUnquotString,psfComment end=~$~ keepend oneline
44
45syn region psfAttQuotString matchgroup=psfAttrib start=~^\s*[^# 	]\+\s\+"~rs=e-1 contains=psfQuotString,psfComment skip=~\\"~ matchgroup=psfQuotString end=~"~ keepend
46
47
48" These regions are defined in attempt to do syntax checking for some
49" of the attributes.
50syn region psfAttTag matchgroup=psfAttrib start="^\s*tag\s\+" contains=psfObjTag,psfComment end="$" keepend oneline
51
52syn region psfAttSpec matchgroup=psfAttrib start="^\s*\(ancestor\|applied_patches\|applied_to\|contents\|corequisites\|exrequisites\|prerequisites\|software_spec\|supersedes\|superseded_by\)\s\+" contains=psfObjTag,psfAttAbbrev,psfComment end="$" keepend
53
54syn region psfAttTags matchgroup=psfAttrib start="^\s*all_filesets\s\+" contains=psfObjTags,psfComment end="$" keepend
55
56syn region psfAttNumber matchgroup=psfAttrib start="^\s*\(compressed_size\|instance_id\|media_sequence_number\|sequence_number\|size\)\s\+" contains=psfNumber,psfComment end="$" keepend oneline
57
58syn region psfAttTime matchgroup=psfAttrib start="^\s*\(create_time\|ctime\|mod_time\|mtime\|timestamp\)\s\+" contains=psfNumber,psfComment end="$" keepend oneline
59
60syn region psfAttFloat matchgroup=psfAttrib start="^\s*\(data_model_revision\|layout_version\)\s\+" contains=psfFloat,psfComment end="$" keepend oneline
61
62syn region psfAttLongDate matchgroup=psfAttrib start="^\s*install_date\s\+" contains=psfLongDate,psfComment end="$" keepend oneline
63
64syn region psfAttState matchgroup=psfAttrib start="^\s*\(state\)\s\+" contains=psfState,psfComment end="$" keepend oneline
65
66syn region psfAttPState matchgroup=psfAttrib start="^\s*\(patch_state\)\s\+" contains=psfPState,psfComment end="$" keepend oneline
67
68syn region psfAttBoolean matchgroup=psfAttrib start="^\s*\(is_kernel\|is_locatable\|is_patch\|is_protected\|is_reboot\|is_reference\|is_secure\|is_sparse\)\s\+" contains=psfBoolean,psfComment end="$" keepend oneline
69
70syn match  psfComment "#.*$"
71
72
73" Define the default highlighting.
74" Only when an item doesn't have highlighting yet
75
76hi def link psfObject       Statement
77hi def link psfAttrib       Type
78hi def link psfQuotString   String
79hi def link psfObjTag       Identifier
80hi def link psfAttAbbrev    PreProc
81hi def link psfObjTags      Identifier
82
83hi def link psfComment      Comment
84
85
86" Long descriptions and copyrights confuse the syntax highlighting, so
87" force vim to backup at least 100 lines before the top visible line
88" looking for a sync location.
89syn sync lines=100
90
91let b:current_syntax = "psf"
92