1" Vim syntax file
2" Language:         pam(8) configuration file
3" Maintainer:       Nikolai Weibull <now@bitwi.se>
4" Latest Revision:  2006-04-19
5
6
7if exists("b:current_syntax")
8  finish
9endif
10
11let s:cpo_save = &cpo
12set cpo&vim
13
14syn match   pamconfService          '^[[:graph:]]\+'
15                                    \ nextgroup=pamconfType,
16                                    \ pamconfServiceLineCont skipwhite
17
18syn keyword pamconfTodo             contained TODO FIXME XXX NOTE
19
20syn region  pamconfComment          display oneline start='#' end='$'
21                                    \ contains=pamconfTodo,@Spell
22
23syn match   pamconfServiceLineCont  contained '\\$'
24                                    \ nextgroup=pamconfType,
25                                    \ pamconfServiceLineCont skipwhite skipnl
26
27syn keyword pamconfType             account auth password session
28                                    \ nextgroup=pamconfControl,
29                                    \ pamconfTypeLineCont skipwhite
30
31syn match   pamconfTypeLineCont     contained '\\$'
32                                    \ nextgroup=pamconfControl,
33                                    \ pamconfTypeLineCont skipwhite skipnl
34
35syn keyword pamconfControl          contained requisite required sufficient
36                                    \ optional
37                                    \ nextgroup=pamconfMPath,
38                                    \ pamconfControlLineContH skipwhite
39
40syn match   pamconfControlBegin     '\[' nextgroup=pamconfControlValues,
41                                    \ pamconfControlLineCont skipwhite
42
43syn match   pamconfControlLineCont  contained '\\$'
44                                    \ nextgroup=pamconfControlValues,
45                                    \ pamconfControlLineCont skipwhite skipnl
46
47syn keyword pamconfControlValues    contained success open_err symbol_err
48                                    \ service_err system_err buf_err
49                                    \ perm_denied auth_err cred_insufficient
50                                    \ authinfo_unavail user_unknown maxtries
51                                    \ new_authtok_reqd acct_expired session_err
52                                    \ cred_unavail cred_expired cred_err
53                                    \ no_module_data conv_err authtok_err
54                                    \ authtok_recover_err authtok_lock_busy
55                                    \ authtok_disable_aging try_again ignore
56                                    \ abort authtok_expired module_unknown
57                                    \ bad_item and default
58                                    \ nextgroup=pamconfControlValueEq
59
60syn match   pamconfControlValueEq   contained '=' nextgroup=pamconfControlAction
61
62syn match   pamconfControlActionN   contained '\d\+\>'
63                                    \ nextgroup=pamconfControlValues,
64                                    \ pamconfControlLineCont,pamconfControlEnd
65                                    \ skipwhite
66syn keyword pamconfControlAction    contained ignore bad die ok done reset
67                                    \ nextgroup=pamconfControlValues,
68                                    \ pamconfControlLineCont,pamconfControlEnd
69                                    \ skipwhite
70
71syn match   pamconfControlEnd       contained '\]'
72                                    \ nextgroup=pamconfMPath,
73                                    \ pamconfControlLineContH skipwhite
74
75syn match   pamconfControlLineContH contained '\\$'
76                                    \ nextgroup=pamconfMPath,
77                                    \ pamconfControlLineContH skipwhite skipnl
78
79syn match   pamconfMPath            contained '\S\+'
80                                    \ nextgroup=pamconfMPathLineCont,
81                                    \ pamconfArgs skipwhite
82
83syn match   pamconfArgs             contained '\S\+'
84                                    \ nextgroup=pamconfArgsLineCont,
85                                    \ pamconfArgs skipwhite
86
87syn match   pamconfMPathLineCont    contained '\\$'
88                                    \ nextgroup=pamconfMPathLineCont,
89                                    \ pamconfArgs skipwhite skipnl
90
91syn match   pamconfArgsLineCont     contained '\\$'
92                                    \ nextgroup=pamconfArgsLineCont,
93                                    \ pamconfArgs skipwhite skipnl
94
95hi def link pamconfTodo             Todo
96hi def link pamconfComment          Comment
97hi def link pamconfService          Statement
98hi def link pamconfServiceLineCont  Special
99hi def link pamconfType             Type
100hi def link pamconfTypeLineCont     pamconfServiceLineCont
101hi def link pamconfControl          Macro
102hi def link pamconfControlBegin     Delimiter
103hi def link pamconfControlLineContH pamconfServiceLineCont
104hi def link pamconfControlLineCont  pamconfServiceLineCont
105hi def link pamconfControlValues    Identifier
106hi def link pamconfControlValueEq   Operator
107hi def link pamconfControlActionN   Number
108hi def link pamconfControlAction    Identifier
109hi def link pamconfControlEnd       Delimiter
110hi def link pamconfMPath            String
111hi def link pamconfMPathLineCont    pamconfServiceLineCont
112hi def link pamconfArgs             Normal
113hi def link pamconfArgsLineCont     pamconfServiceLineCont
114
115let b:current_syntax = "pamconf"
116
117let &cpo = s:cpo_save
118unlet s:cpo_save
119