neovim

Neovim text editor
git clone https://git.dasho.dev/neovim.git
Log | Files | Refs | README

pamconf.vim (6328B)


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