d7ca7b194d
Build and Deploy Verso / deploy (push) Successful in 14m13s
Three grammar gaps caused large blocks of code to be unhighlighted:
1. KeywordExpr now accepts an exclusive keywordBody: '#show sel: body' is
parsed via ':', and '#let name = value' via '='. callOrValue extends
the subject to include CodeString so '#import "pkg"' highlights the path.
2. ContentBlock added to callSuffix so '#func("arg")[content]' and
'#next-step("url")[...]' parse their trailing content block as code
rather than falling back to markup.
3. Tokenizer: COLON added as a valid predecessor so identifiers (e.g. 'blue'
in 'fill: blue') and keywords (e.g. 'set' in '#show link: set text(...)')
are recognised after ':'. EQUALS already added in the previous commit.
The ident-chain backward scan now also skips whitespace before testing for
'#' or ':', enabling 'text' in 'set text' to trace back to '#' through the
keyword gap. @precedence updated with CodeString, '[', ':' to resolve
overlapping-token conflicts with MarkupContent in merged states.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>