From 24d96791c318c39b4c6d7c6bdf5b66059541a4da Mon Sep 17 00:00:00 2001 From: cos Date: Thu, 2 Nov 2023 10:09:01 +0100 Subject: Adapt to findings from preseed.debian.net * Comment on questions not meeting the syntax. * Add period `.` as allowed character when matching fields, as those are actively used in question namnes. After fetching all files from preseed.debian.net, the following: ``` cat **/* | sed -n 's/#\s*d-i\s*\([^ ]\+\).*/\1/p' | grep -v '^\([[:alnum:]._-]\+/\)\+[[:alnum:]._-]\+$' ``` returns only the documented anomaly. --- syntax/preseed.vim | 37 +++++++++++++++++++++++++++---------- 1 file changed, 27 insertions(+), 10 deletions(-) diff --git a/syntax/preseed.vim b/syntax/preseed.vim index d716866..4690280 100644 --- a/syntax/preseed.vim +++ b/syntax/preseed.vim @@ -1,7 +1,7 @@ " Vim syntax file " Language: Debian preseed " Maintainer: cos , https://www.netizen.se/#contact -" Last Change: 2023 Oct 15 +" Last Change: 2023 Nov 2 " Remark: https://wiki.debian.org/DebianInstaller/Preseed " quit when a syntax file was already loaded @@ -9,11 +9,28 @@ if exists('b:current_syntax') finish endif - " The syntax of each line in a preseed file follows: " - -" Create clusters for two of these four parts of a preseed line. +" Lets sloppily refer to them as columns. + +" Out in the wild, there appears to be two preseed questions which fail to +" match the syntax rules. According to preseed.debian.net, these two are: +" +" debian-installer/shell-plugin and sitesummary-client/nagios-server +" +" The first one takes the `terminal` question type (rather than `boolean`, +" `string`, `password`, `select`, `multiselect` or `note`). Attempting to ask +" about this on #debian-boot gave the classic (non-)warm welcoming from one of +" the regulars there. That person claimed to have investigated the issue and +" stated that it is correct as it is. Followed up with a polite but clear +" instruction to shut-up. +" +" The second one is described as an internal hidden debconf question, and has +" 'db_get' injected between the owner and the question name fields. That could +" either be a clever hack or a bug. No investigation has been done to figure +" out which. + +" Create clusters for two of these four columns of a preseed line. syntax cluster preseedSecond contains=preseedQuestion,preseedOwnerLC syntax cluster preseedThird contains=preseedBooleanType,preseedStrLikeType,preseedMultiSelType,preseedNote,preseedSelectType,preseedQuestionLC @@ -21,20 +38,20 @@ syntax cluster preseedThird contains=preseedBooleanType,preseedStrLikeType,prese " Define the highlighting. Doesn't map perfectly to the group's intents, but " arguably close enough? -" First, +" First column, hi! def link preseedOwner Label -" Second, +" Second column, hi! def link preseedQuestion Identifier -" Third, +" Third column, 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, +" Fourth column, hi! def link preseedBooleanVal Special hi! def link preseedMultiSelVal Special hi! def link preseedStrLikeVal String @@ -54,10 +71,10 @@ hi! def link preseedStrLikeLC Operator " Add the syntax matching rules. " First, -sy match preseedOwner /^\s*[[:alnum:]_-]\+\(\s\|$\)/ nextgroup=@preseedSecond,preseedOwnerLC +sy match preseedOwner /^\s*[[:alnum:]._-]\+\(\s\|$\)/ nextgroup=@preseedSecond,preseedOwnerLC " Second, -sy match preseedQuestion contained "\s*\([[:alnum:]_-]\+/\)\+[[:alnum:]_-]\+\(\s\|$\)" nextgroup=@preseedThird,preseedQuestionLC +sy match preseedQuestion contained "\s*\([[:alnum:]._-]\+/\)\+[[:alnum:]._-]\+\(\s\|$\)" nextgroup=@preseedThird,preseedQuestionLC " Third, " (boolean, multiselect, note, password, select, string) -- cgit v1.2.3