New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[Ruby] Support code on same line as heredoc begin token #466
Conversation
What does this do exactly? Edit: Seems like it also accepts a boolean. |
It removes N scopes from the scope name stack. Or you can pass In this case, it clears the two scopes added by the heredoc open token so that the code on the remainder of the line doesn't get highlighted like it is part of a string. This could be useful for string interpolation, since we can remove the general string highlighting from the interpolated part. |
I assume this works like a meta scope is only valid for the current context? I like this. I also like that we can remove the string scope from interpolated sections like this. |
Yes, this functions like |
# - include: interpolated-ruby | ||
# - include: escaped-char | ||
|
||
# This prevents clear_scopes from applying to the push token |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@wbond what does this mean? Why is this necessary? This context seems useless to me.
I'm trying to implement clear_scopes
in https://github.com/trishume/syntect and the fact that this context looks useless to me suggests I might be misunderstanding the semantics of either clear_scopes
or push/pop operations.
If you could explain to me why this is necessary I would really appreciate it. Also, what is a "push token" and why would clear_scopes
apply to it?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
clear_scopes
is implemented in the same way as meta_scope
in that it applies to the match the pushed, and to the match that pops.
The match that pushed is what I mean by "push token".
Without this, clear_scopes
would clear the scope from the opening heredoc token, but we don't want that. I decided not to implement clear_scopes_content
since this method can be used to emulate it.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Ok that makes sense, and in retrospect is explained in the docs, thanks for clearing up my confusion. Thanks!
This will be merged right before we ship 3115 since it uses new functionality