Wrong syntax highlighting for `<%==` erb syntax
Nobody has claimed this yet.
Assessment
- Difficulty
- 2/5
- Estimated time
- 1-3 hours
- Newbie friendliness
- 38/100
Research direction
Start with vscode/grammars/erb.cson.json and vscode/languages/erb.json, using the reproduction of the <%= syntax and the proposed diff as the entry point. Verify that < %== ERB tags receive the correct syntax highlighting and that the language configuration includes the expected bracket and surrounding pairs; the issue notes that no existing ERB highlighting tests are present.
Written by the indexing model from the issue text.
Description
Description
Ruby LSP Information
Details
VS Code Version
1.95.1
Ruby LSP Extension Version
0.8.14
Ruby LSP Server Version
0.22.1
Ruby LSP Addons
- Ruby LSP Rails
Ruby Version
3.3.6
Ruby Version Manager
rbenv
Installed Extensions
Click to expand
- asciidoctor-vscode (3.4.2)
- gitlens (16.0.4)
- go (0.42.1)
- material-icon-theme (5.14.1)
- remote-containers (0.388.0)
- ruby-lsp (0.8.14)
- sorbet-vscode-extension (0.3.37)
- vscode-github-actions (0.27.0)
- vscode-rdbg (0.2.2)
- vscode-wakatime (24.9.1)
- vscode-yaml (1.15.0)
Ruby LSP Settings
Click to expand
Workspace
{}
User
{
"enabledFeatures": {
"codeActions": true,
"diagnostics": true,
"documentHighlights": true,
"documentLink": true,
"documentSymbols": true,
"foldingRanges": true,
"formatting": true,
"hover": true,
"inlayHint": true,
"onTypeFormatting": true,
"selectionRanges": true,
"semanticHighlighting": true,
"completion": true,
"codeLens": true,
"definition": true,
"workspaceSymbol": true,
"signatureHelp": true,
"typeHierarchy": true
},
"featuresConfiguration": {},
"addonSettings": {},
"rubyVersionManager": {
"identifier": "auto"
},
"customRubyCommand": "",
"formatter": "none",
"linters": null,
"bundleGemfile": "",
"testTimeout": 30,
"branch": "",
"pullDiagnosticsOn": "both",
"useBundlerCompose": false,
"bypassTypechecker": false,
"rubyExecutablePath": "",
"indexing": {},
"erbSupport": true,
"useLauncher": false,
"featureFlags": {}
}
Reproduction steps
A lesser used but valid syntax of erb is <%== which will mark the passed string as html safe. Rails documents it at the bottom of https://guides.rubyonrails.org/active_support_core_extensions.html#safe-strings, although I'm not sure if this is rails specific or not. Could very well be erubi only.
ruby-lsp fails to consider the second equal sign, showing the code like this:
A fix seems rather straightforward but erb highlighting has no tests and I don't really understand these gramar files so I'm not very confident in my change. I can open a PR if it looks reasonable and no tests are fine.
Patch
diff --git a/vscode/grammars/erb.cson.json b/vscode/grammars/erb.cson.json
index 475a9454..fe88bb21 100644
--- a/vscode/grammars/erb.cson.json
+++ b/vscode/grammars/erb.cson.json
@@ -80,7 +80,7 @@
"tags": {
"patterns": [
{
- "begin": "<%+(?!>)[-=]?(?![^%]*%>)",
+ "begin": "<%+(?!>)[-=]?=?(?![^%]*%>)",
"beginCaptures": {
"0": {
"name": "punctuation.section.embedded.begin.erb"
@@ -113,7 +113,7 @@
]
},
{
- "begin": "<%+(?!>)[-=]?",
+ "begin": "<%+(?!>)[-=]?=?",
"beginCaptures": {
"0": {
"name": "punctuation.section.embedded.begin.erb"
diff --git a/vscode/languages/erb.json b/vscode/languages/erb.json
index ae1564fb..f8373735 100644
--- a/vscode/languages/erb.json
+++ b/vscode/languages/erb.json
@@ -5,6 +5,7 @@
"brackets": [
["<%", "%>"],
["<%=", "%>"],
+ ["<%==", "%>"],
["<%#", "%>"]
],
"autoClosingPairs": [
@@ -35,6 +36,7 @@
"surroundingPairs": [
["<%", "%>"],
["<%=", "%>"],
+ ["<%==", "%>"],
["<%#", "%>"],
["{", "}"],
["[", "]"],
- Dominant language
- Ruby
- Stars
- 2k
- Forks
- 281
- Avg merge
- 1h 47m
- Merged PRs (30d)
- 8
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from Shopify/ruby-lsp
-
bug
Difficulty 2/5 1-3 hours Newbie friendliness 76/100
-
bug help-wanted pinned
Difficulty 2/5 1-3 hours Newbie friendliness 68/100
-
bug pinned
Difficulty 4/5 3-5 days Newbie friendliness 45/100
-
bug
Difficulty 4/5 3-5 days Newbie friendliness 68/100
-
bug
Difficulty 4/5 3-5 days Newbie friendliness 35/100
All issues in Shopify/ruby-lsp
Similar issues
-
Difficulty 2/5 1-3 hours Newbie friendliness 75/100
palladius/rails8-app-on-gcp#145 ·
-
Difficulty 2/5 1-3 hours Newbie friendliness 75/100
-
Difficulty 2/5 1-3 hours Newbie friendliness 75/100
rubocop/rubocop-rspec#2236 ·
-
bug
Difficulty 2/5 1-3 hours Newbie friendliness 70/100
riscv/riscv-unified-db#2624 · 1 reaction ·
-
Difficulty 1/5 Under an hour Newbie friendliness 88/100