On Saturday, March 1, 2014 at 3:55 AM, Dmitry Gutov wrote:
(This is probably too late for 24.4)
Hope it’s not :-) (although it’s not a big deal obviously).
%w/W should be indented like other array literals.
And %i/I too, I guess.
Indeed. I forgot about them.
Looks like this'll have to be done in two parts:
1. syntax-propertize the above cases differently from the rest of the
percent literals (which are treated like strings).
I was thinking more or less the same.
Don't know exactly what syntax to use. The values can contain any
unpaired characters, except those delimiting them. Put syntax "symbol"
on everything inside them, except whitespace?
And still handle interpolations somehow.
Sounds reasonable. Not sure how hard it would be to implement.
2. Tokenize the elements inside the above literals without regard to
characters used in them. `ruby-smie--backward-token' and its counterpart
would have to be able to easily know when it's inside such literal.
Alternatively, still propertize them as "general strings", but replace
`smie-indent-inside-string' in `smie-indent-functions' with a
specialized version that would look at what the string begins with.
Option 1 seems better/cleaner to me, but obviously I’m not as familiar as you with the existing code, so
it’s ultimately your call.
The change in syntax highlighting would have to be handled separately.