diff options
Diffstat (limited to 'ftplugin')
-rw-r--r-- | ftplugin/preseed.vim | 107 |
1 files changed, 107 insertions, 0 deletions
diff --git a/ftplugin/preseed.vim b/ftplugin/preseed.vim new file mode 100644 index 0000000..7b4e1ed --- /dev/null +++ b/ftplugin/preseed.vim @@ -0,0 +1,107 @@ +" Vim syntax file +" Language: Debian preseed +" Maintainer: cos <cos>, https://www.netizen.se/#contact +" Last Change: 2023 Oct 13 +" Remark: https://wiki.debian.org/DebianInstaller/Preseed + +" quit when a syntax file was already loaded +if exists('b:current_syntax') + finish +endif + + +" The syntax of each line in a preseed file follows: +" <owner> <question name> <question type> <value> + +" Create clusters for two of these four parts of a preseed line. +syntax cluster preseedSecond contains=preseedQuestion,preseedOwnerLC +syntax cluster preseedThird contains=preseedBooleanType, + \ preseedStrLikeType, + \ preseedMultiSelType, + \ preseedNote, + \ preseedSelectType, + \ preseedQuestionLC + + +" Define the highlighting. Doesn't map perfectly to the group's intents, but +" arguably close enough? + +" First, <owner> +hi! def link preseedOwner Label + +" Second, <question name> +hi! def link preseedQuestion Identifier + +" Third, <question type> +hi! def link preseedBooleanType Type +hi! def link preseedMultiSelType Type +hi! def link preseedNote Type +hi! def link preseedSelectType Type +hi! def link preseedStrLikeType Type + +" Fourth, <value> +hi! def link preseedBooleanVal Special +hi! def link preseedMultiSelVal Special +hi! def link preseedStrLikeVal String +hi! def link preseedVal String +hi! def link preseedSelectVal Special +hi! def link preseedMultiSelSep Operator +hi! def link preseedComment Comment + +" Line Continuation +hi! def link preseedOwnerLC Operator +hi! def link preseedQuestionLC Operator +hi! def link preseedBooleanLC Operator +hi! def link preseedMultiSelLC Operator +hi! def link preseedStrLikeLC Operator + + +" Add the syntax matching rules. + +" First, <owner> +sy match preseedOwner /^\s*[[:alnum:]_-]\+\(\s\|$\)/ + \ nextgroup=@preseedSecond,preseedOwnerLC + +" Second, <question name> +sy match preseedQuestion contained + \ "\s*\([[:alnum:]_-]\+/\)\+[[:alnum:]_-]\+\(\s\|$\)" + \ nextgroup=@preseedThird,preseedQuestionLC + +" Third, <question type> +" (boolean, multiselect, note, password, select, string) +sy match preseedBooleanType contained /\s*boolean\(\s\|$\)/ + \ nextgroup=preseedBooleanVal,preseedBooleanLC +sy match preseedMultiSelType contained /\s*multiselect\(\s\|$\)/ + \ nextgroup=preseedMultiSelVal,preseedMultiSelLC +sy match preseedNote contained /\s*note$/ +sy match preseedSelectType contained /\s*select\(\s\|$\)/ + \ nextgroup=preseedSelectVal,preseedSelectLC +sy match preseedStrLikeType contained /\s*\(password\|string\)\(\s\|$\)/ + \ nextgroup=preseedStrLikeVal,preseedStrLikeLC + + +" Fourth, <value> +sy match preseedBooleanVal contained /\s*\(false\|true\)/ +sy match preseedMultiSelVal contained /.*/me=e + \ contains=preseedMultiSelSep +sy match preseedMultiSelVal contained /.*\\/me=e-1 + \ contains=preseedMultiSelSep nextgroup=preseedMultiSelLC +sy match preseedMultiSelSep contained /,/ +sy match preseedSelectVal contained /.*/ +sy match preseedStrLikeVal contained /.*/me=e +sy match preseedStrLikeVal contained /.*\\/me=e-1 + \ nextgroup=preseedStrLikeLC + + +" Line continuation needs to be down here override everything other syntax. +sy match preseedBooleanLC contained /\s*\\$/ + \ nextgroup=preseedBooleanVal,preseedBooleanLC skipnl +sy match preseedMultiSelLC contained /\\$/ nextgroup=preseedMultiSelVal skipnl +sy match preseedOwnerLC contained /\s*\\$/ nextgroup=@preseedSecond skipnl +sy match preseedQuestionLC contained /\s*\\$/ nextgroup=@preseedThird skipnl +sy match preseedSelectLC contained /\s*\\$/ + \ nextgroup=preseedSelectVal,preseedSelectLC skipnl +sy match preseedStrLikeLC contained /\\$/ nextgroup=preseedStrLikeVal skipnl + +" And comments must override everything else. +sy match preseedComment /^\s*#.*/ |