Open matthewd opened 2 years ago
Another example I ran into that hits the same issue, I think:
output: {
'loglevel' => 'fatal',
vf: 'scale=\'min(400\, iw):min(400\, ih)\':force_original_aspect_ratio=decrease',
}.freeze,
I managed to patch it locally by adding a check for the lack of \
before '
, but that's really a workaround
-syn match rubySymbol "'\%(\\.\|[^']\)*'::\@!"he=e-1 contains=rubyQuoteEscape,rubyBackslashEscape,rubySingleQuoteSymbolDelimiter
+syn match rubySymbol "'\%(\\.\|[^\']\)*'::\@!"he=e-1 contains=rubyQuoteEscape,rubyBackslashEscape,rubySingleQuoteSymbolDelimiter
It's weird that it's even trying to highlight ...min(400\, ih)\':force_...
as a symbol, it shouldn't be contained inside one. I don't know.
Given:
The inner
":
sequence pairs with the opening quote, makinga
part of a quoted symbol hash key. The#{..}
subexpression itself still highlights correctly, butc
is not part of any quoted construct (and consequently the closing quote instead starts a new string, messing up the rest of the file).This feels like it might be unsolvably edge-casey, but I'm regularly astounded by how well this syntax handles very questionable code, so I figured it's at least worth reporting. 🤷🏻♂️
I encountered this pattern in the wild in this file: https://github.com/rails/rails/blob/40272988cec849c734ec02cfa89ff830ae019d9e/actionpack/lib/action_controller/metal/strong_parameters.rb#L51