142eeac35SBram Moolenaar" Vim syntax file 242eeac35SBram Moolenaar" Language: pam(8) configuration file 3214641f7SBram Moolenaar" Previous Maintainer: Nikolai Weibull <[email protected]> 4*e7b1ea02SBram Moolenaar" Latest Revision: 2020/08/04 5*e7b1ea02SBram Moolenaar" Changes By: Haochen Tong 642eeac35SBram Moolenaar 742eeac35SBram Moolenaar 842eeac35SBram Moolenaarif exists("b:current_syntax") 942eeac35SBram Moolenaar finish 1042eeac35SBram Moolenaarendif 1142eeac35SBram Moolenaar 1242eeac35SBram Moolenaarlet s:cpo_save = &cpo 1342eeac35SBram Moolenaarset cpo&vim 1442eeac35SBram Moolenaar 15*e7b1ea02SBram Moolenaarlet s:has_service_field = exists("b:pamconf_has_service_field") 16*e7b1ea02SBram Moolenaar \ ? b:pamconf_has_service_field 17*e7b1ea02SBram Moolenaar \ : expand('%:t') == 'pam.conf' ? 1 : 0 18*e7b1ea02SBram Moolenaar 19*e7b1ea02SBram Moolenaarsyn match pamconfType '-\?[[:alpha:]]\+' 20*e7b1ea02SBram Moolenaar \ contains=pamconfTypeKeyword 21*e7b1ea02SBram Moolenaar \ nextgroup=pamconfControl, 22*e7b1ea02SBram Moolenaar \ pamconfTypeLineCont skipwhite 23*e7b1ea02SBram Moolenaar 24*e7b1ea02SBram Moolenaarsyn keyword pamconfTypeKeyword contained account auth password session 25*e7b1ea02SBram Moolenaar 26*e7b1ea02SBram Moolenaarif s:has_service_field 2742eeac35SBram Moolenaar syn match pamconfService '^[[:graph:]]\+' 2842eeac35SBram Moolenaar \ nextgroup=pamconfType, 2942eeac35SBram Moolenaar \ pamconfServiceLineCont skipwhite 3042eeac35SBram Moolenaar 31*e7b1ea02SBram Moolenaar syn match pamconfServiceLineCont contained '\\$' 32*e7b1ea02SBram Moolenaar \ nextgroup=pamconfType, 33*e7b1ea02SBram Moolenaar \ pamconfServiceLineCont skipwhite skipnl 34*e7b1ea02SBram Moolenaarendif 35*e7b1ea02SBram Moolenaar 3642eeac35SBram Moolenaarsyn keyword pamconfTodo contained TODO FIXME XXX NOTE 3742eeac35SBram Moolenaar 3842eeac35SBram Moolenaarsyn region pamconfComment display oneline start='#' end='$' 3942eeac35SBram Moolenaar \ contains=pamconfTodo,@Spell 4042eeac35SBram Moolenaar 4142eeac35SBram Moolenaarsyn match pamconfTypeLineCont contained '\\$' 4242eeac35SBram Moolenaar \ nextgroup=pamconfControl, 4342eeac35SBram Moolenaar \ pamconfTypeLineCont skipwhite skipnl 4442eeac35SBram Moolenaar 4542eeac35SBram Moolenaarsyn keyword pamconfControl contained requisite required sufficient 465302d9ebSBram Moolenaar \ optional include substack 4742eeac35SBram Moolenaar \ nextgroup=pamconfMPath, 4842eeac35SBram Moolenaar \ pamconfControlLineContH skipwhite 4942eeac35SBram Moolenaar 5042eeac35SBram Moolenaarsyn match pamconfControlBegin '\[' nextgroup=pamconfControlValues, 5142eeac35SBram Moolenaar \ pamconfControlLineCont skipwhite 5242eeac35SBram Moolenaar 5342eeac35SBram Moolenaarsyn match pamconfControlLineCont contained '\\$' 5442eeac35SBram Moolenaar \ nextgroup=pamconfControlValues, 5542eeac35SBram Moolenaar \ pamconfControlLineCont skipwhite skipnl 5642eeac35SBram Moolenaar 5742eeac35SBram Moolenaarsyn keyword pamconfControlValues contained success open_err symbol_err 5842eeac35SBram Moolenaar \ service_err system_err buf_err 5942eeac35SBram Moolenaar \ perm_denied auth_err cred_insufficient 6042eeac35SBram Moolenaar \ authinfo_unavail user_unknown maxtries 6142eeac35SBram Moolenaar \ new_authtok_reqd acct_expired session_err 6242eeac35SBram Moolenaar \ cred_unavail cred_expired cred_err 6342eeac35SBram Moolenaar \ no_module_data conv_err authtok_err 6442eeac35SBram Moolenaar \ authtok_recover_err authtok_lock_busy 6542eeac35SBram Moolenaar \ authtok_disable_aging try_again ignore 6642eeac35SBram Moolenaar \ abort authtok_expired module_unknown 6742eeac35SBram Moolenaar \ bad_item and default 6842eeac35SBram Moolenaar \ nextgroup=pamconfControlValueEq 6942eeac35SBram Moolenaar 705302d9ebSBram Moolenaarsyn match pamconfControlValueEq contained '=' 715302d9ebSBram Moolenaar \ nextgroup=pamconfControlActionN, 725302d9ebSBram Moolenaar \ pamconfControlAction 7342eeac35SBram Moolenaar 7442eeac35SBram Moolenaarsyn match pamconfControlActionN contained '\d\+\>' 7542eeac35SBram Moolenaar \ nextgroup=pamconfControlValues, 7642eeac35SBram Moolenaar \ pamconfControlLineCont,pamconfControlEnd 7742eeac35SBram Moolenaar \ skipwhite 7842eeac35SBram Moolenaarsyn keyword pamconfControlAction contained ignore bad die ok done reset 7942eeac35SBram Moolenaar \ nextgroup=pamconfControlValues, 8042eeac35SBram Moolenaar \ pamconfControlLineCont,pamconfControlEnd 8142eeac35SBram Moolenaar \ skipwhite 8242eeac35SBram Moolenaar 8342eeac35SBram Moolenaarsyn match pamconfControlEnd contained '\]' 8442eeac35SBram Moolenaar \ nextgroup=pamconfMPath, 8542eeac35SBram Moolenaar \ pamconfControlLineContH skipwhite 8642eeac35SBram Moolenaar 8742eeac35SBram Moolenaarsyn match pamconfControlLineContH contained '\\$' 8842eeac35SBram Moolenaar \ nextgroup=pamconfMPath, 8942eeac35SBram Moolenaar \ pamconfControlLineContH skipwhite skipnl 9042eeac35SBram Moolenaar 9142eeac35SBram Moolenaarsyn match pamconfMPath contained '\S\+' 9242eeac35SBram Moolenaar \ nextgroup=pamconfMPathLineCont, 9342eeac35SBram Moolenaar \ pamconfArgs skipwhite 9442eeac35SBram Moolenaar 9542eeac35SBram Moolenaarsyn match pamconfArgs contained '\S\+' 9642eeac35SBram Moolenaar \ nextgroup=pamconfArgsLineCont, 9742eeac35SBram Moolenaar \ pamconfArgs skipwhite 9842eeac35SBram Moolenaar 9942eeac35SBram Moolenaarsyn match pamconfMPathLineCont contained '\\$' 10042eeac35SBram Moolenaar \ nextgroup=pamconfMPathLineCont, 10142eeac35SBram Moolenaar \ pamconfArgs skipwhite skipnl 10242eeac35SBram Moolenaar 10342eeac35SBram Moolenaarsyn match pamconfArgsLineCont contained '\\$' 10442eeac35SBram Moolenaar \ nextgroup=pamconfArgsLineCont, 10542eeac35SBram Moolenaar \ pamconfArgs skipwhite skipnl 10642eeac35SBram Moolenaar 10742eeac35SBram Moolenaarhi def link pamconfTodo Todo 10842eeac35SBram Moolenaarhi def link pamconfComment Comment 10942eeac35SBram Moolenaarhi def link pamconfService Statement 11042eeac35SBram Moolenaarhi def link pamconfServiceLineCont Special 111*e7b1ea02SBram Moolenaarhi def link pamconfType Special 112*e7b1ea02SBram Moolenaarhi def link pamconfTypeKeyword Type 11342eeac35SBram Moolenaarhi def link pamconfTypeLineCont pamconfServiceLineCont 11442eeac35SBram Moolenaarhi def link pamconfControl Macro 11542eeac35SBram Moolenaarhi def link pamconfControlBegin Delimiter 11642eeac35SBram Moolenaarhi def link pamconfControlLineContH pamconfServiceLineCont 11742eeac35SBram Moolenaarhi def link pamconfControlLineCont pamconfServiceLineCont 11842eeac35SBram Moolenaarhi def link pamconfControlValues Identifier 11942eeac35SBram Moolenaarhi def link pamconfControlValueEq Operator 12042eeac35SBram Moolenaarhi def link pamconfControlActionN Number 12142eeac35SBram Moolenaarhi def link pamconfControlAction Identifier 12242eeac35SBram Moolenaarhi def link pamconfControlEnd Delimiter 12342eeac35SBram Moolenaarhi def link pamconfMPath String 12442eeac35SBram Moolenaarhi def link pamconfMPathLineCont pamconfServiceLineCont 12542eeac35SBram Moolenaarhi def link pamconfArgs Normal 12642eeac35SBram Moolenaarhi def link pamconfArgsLineCont pamconfServiceLineCont 12742eeac35SBram Moolenaar 12842eeac35SBram Moolenaarlet b:current_syntax = "pamconf" 12942eeac35SBram Moolenaar 13042eeac35SBram Moolenaarlet &cpo = s:cpo_save 13142eeac35SBram Moolenaarunlet s:cpo_save 132