summaryrefslogtreecommitdiffstats
path: root/runtime/syntax/pamconf.vim
diff options
context:
space:
mode:
Diffstat (limited to 'runtime/syntax/pamconf.vim')
-rw-r--r--runtime/syntax/pamconf.vim131
1 files changed, 131 insertions, 0 deletions
diff --git a/runtime/syntax/pamconf.vim b/runtime/syntax/pamconf.vim
new file mode 100644
index 0000000..2913284
--- /dev/null
+++ b/runtime/syntax/pamconf.vim
@@ -0,0 +1,131 @@
+" Vim syntax file
+" Language: pam(8) configuration file
+" Previous Maintainer: Nikolai Weibull <now@bitwi.se>
+" Latest Revision: 2020/08/04
+" Changes By: Haochen Tong
+
+
+if exists("b:current_syntax")
+ finish
+endif
+
+let s:cpo_save = &cpo
+set cpo&vim
+
+let s:has_service_field = exists("b:pamconf_has_service_field")
+ \ ? b:pamconf_has_service_field
+ \ : expand('%:t') == 'pam.conf' ? 1 : 0
+
+syn match pamconfType '-\?[[:alpha:]]\+'
+ \ contains=pamconfTypeKeyword
+ \ nextgroup=pamconfControl,
+ \ pamconfTypeLineCont skipwhite
+
+syn keyword pamconfTypeKeyword contained account auth password session
+
+if s:has_service_field
+ syn match pamconfService '^[[:graph:]]\+'
+ \ nextgroup=pamconfType,
+ \ pamconfServiceLineCont skipwhite
+
+ syn match pamconfServiceLineCont contained '\\$'
+ \ nextgroup=pamconfType,
+ \ pamconfServiceLineCont skipwhite skipnl
+endif
+
+syn keyword pamconfTodo contained TODO FIXME XXX NOTE
+
+syn region pamconfComment display oneline start='#' end='$'
+ \ contains=pamconfTodo,@Spell
+
+syn match pamconfTypeLineCont contained '\\$'
+ \ nextgroup=pamconfControl,
+ \ pamconfTypeLineCont skipwhite skipnl
+
+syn keyword pamconfControl contained requisite required sufficient
+ \ optional include substack
+ \ nextgroup=pamconfMPath,
+ \ pamconfControlLineContH skipwhite
+
+syn match pamconfControlBegin '\[' nextgroup=pamconfControlValues,
+ \ pamconfControlLineCont skipwhite
+
+syn match pamconfControlLineCont contained '\\$'
+ \ nextgroup=pamconfControlValues,
+ \ pamconfControlLineCont skipwhite skipnl
+
+syn keyword pamconfControlValues contained success open_err symbol_err
+ \ service_err system_err buf_err
+ \ perm_denied auth_err cred_insufficient
+ \ authinfo_unavail user_unknown maxtries
+ \ new_authtok_reqd acct_expired session_err
+ \ cred_unavail cred_expired cred_err
+ \ no_module_data conv_err authtok_err
+ \ authtok_recover_err authtok_lock_busy
+ \ authtok_disable_aging try_again ignore
+ \ abort authtok_expired module_unknown
+ \ bad_item and default
+ \ nextgroup=pamconfControlValueEq
+
+syn match pamconfControlValueEq contained '='
+ \ nextgroup=pamconfControlActionN,
+ \ pamconfControlAction
+
+syn match pamconfControlActionN contained '\d\+\>'
+ \ nextgroup=pamconfControlValues,
+ \ pamconfControlLineCont,pamconfControlEnd
+ \ skipwhite
+syn keyword pamconfControlAction contained ignore bad die ok done reset
+ \ nextgroup=pamconfControlValues,
+ \ pamconfControlLineCont,pamconfControlEnd
+ \ skipwhite
+
+syn match pamconfControlEnd contained '\]'
+ \ nextgroup=pamconfMPath,
+ \ pamconfControlLineContH skipwhite
+
+syn match pamconfControlLineContH contained '\\$'
+ \ nextgroup=pamconfMPath,
+ \ pamconfControlLineContH skipwhite skipnl
+
+syn match pamconfMPath contained '\S\+'
+ \ nextgroup=pamconfMPathLineCont,
+ \ pamconfArgs skipwhite
+
+syn match pamconfArgs contained '\S\+'
+ \ nextgroup=pamconfArgsLineCont,
+ \ pamconfArgs skipwhite
+
+syn match pamconfMPathLineCont contained '\\$'
+ \ nextgroup=pamconfMPathLineCont,
+ \ pamconfArgs skipwhite skipnl
+
+syn match pamconfArgsLineCont contained '\\$'
+ \ nextgroup=pamconfArgsLineCont,
+ \ pamconfArgs skipwhite skipnl
+
+hi def link pamconfTodo Todo
+hi def link pamconfComment Comment
+hi def link pamconfService Statement
+hi def link pamconfServiceLineCont Special
+hi def link pamconfType Special
+hi def link pamconfTypeKeyword Type
+hi def link pamconfTypeLineCont pamconfServiceLineCont
+hi def link pamconfControl Macro
+hi def link pamconfControlBegin Delimiter
+hi def link pamconfControlLineContH pamconfServiceLineCont
+hi def link pamconfControlLineCont pamconfServiceLineCont
+hi def link pamconfControlValues Identifier
+hi def link pamconfControlValueEq Operator
+hi def link pamconfControlActionN Number
+hi def link pamconfControlAction Identifier
+hi def link pamconfControlEnd Delimiter
+hi def link pamconfMPath String
+hi def link pamconfMPathLineCont pamconfServiceLineCont
+hi def link pamconfArgs Normal
+hi def link pamconfArgsLineCont pamconfServiceLineCont
+
+let b:current_syntax = "pamconf"
+
+let &cpo = s:cpo_save
+unlet s:cpo_save