-
Notifications
You must be signed in to change notification settings - Fork 5
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
Refactor Syntax #39
Refactor Syntax #39
Conversation
Refactor folder structure after the scheme of Jinja2 package.
This commit... 1. introduces common `meta.template.twig` applied scope accross Text/HTML/JS/CSS 2. adjusts snippet selectors 3. adds some helper key bindings 4. applies syntax specific toggle comment rules to apply Twig comments by default but retain original syntax's block comment as variant 2. 5. renames contexts to use hyphens as subword-separators 6. reorders contexts following lessons learned from Jinja and other template syntaxes 7. apply `meta.embedded` to tags and `source.twig` to their content. 8. fix various smaller highlighting bugs
a0ad157
to
ca98457
Compare
A formatting change and removal of some default operator/operand keys.
This commit enables to test embedded CSS, JS, JSON code in Twig templates. Without it, all test assertions cause illegal syntax highlighting in script or style tags. Note: It drops some tests for leading `{{` and `{%` due to assertion punctuation now requiring 2 chars, but those are most often redundant anyway.
- reorder style tag context - add some backward compatibility fixes
Supported by Twig 3.15+
Adds snippets for individual tags so typing a tag name and hitting tab key expands to an individual tag enclosed in `{% ... %}`: if| => {% if | %} embed| => {% embed | %} Triggers of existing block snippets are prefixed with `b` to avoid ambiguities with tag-snippets. Otherwise it would be unclear whether blocks or tags are expanded and/or completion panel was displayed requiring arrow key navigation. bif| {% if conditon %} | {% endif %} Reorganize snippets in individual sub-directories in case someone wants to disable individual ones based on type.
ed7dd46
to
5020129
Compare
Twig tags within quoted strings can contain same sort of quotes. This requires another strategy of handling embedded code blocks especially in inline event and style attributes. Solution is borrowed from PHP.
af35fc3
to
db2d435
Compare
Instead of adding rules to pop on quotes to each context, this commit just replaces relevant string contexts of JS/CSS to make sure to pop contexts properly. This reduces compiled syntax cache from 820kB to 610kB.
This commit fixes Twig statement tags and comments being scoped meta.attribute-with-value by accident.
Add some info about changed snippets. Snippets are basically aligned with Jinja2.
This looks great, I pulled down the branch, did some cursory testing, and it appears to fix a lot of the issues I was seeing. Thanks for putting in all the work to update the syntax @deathaxe! |
Feel free to post any issues you encounter. |
|
This commit enables key bindings related to tag creation also in strings and comments. Before: <p class="my-{|}"> => <p class="my-{{|}}"> After <p class="my-{|}"> => <p class="my-{{ | }}">
I just pulled down the latest commits and both the issues I found are working now. |
@braver: I think this PR is ready for release. Required channel changes are prepared at wbond/package_control_channel#8995 With a look at amount of changes it's probably worth a new major version. |
Looks good! I'll be using it on and off the coming days, perhaps I'll run into something, but this looks really solid. Let's 🚀 |
Resolves #33
This PR...
meta.template.twig
applied scope accross Text/HTML/JS/CSSmeta.embedded
to tags andsource.twig
to their content.Note: This PR requires ST4152+, most likely due to CSS.
To support older releases we'd need to vendor CSS.