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