Skip to content
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

Wrong syntax highlighting for <%== erb syntax #2909

Open
Earlopain opened this issue Nov 25, 2024 · 1 comment
Open

Wrong syntax highlighting for <%== erb syntax #2909

Earlopain opened this issue Nov 25, 2024 · 1 comment
Labels
bug Something isn't working vscode This pull request should be included in the VS Code extension's release notes

Comments

@Earlopain
Copy link
Contributor

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:

Image

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": [
     ["<%", "%>"],
     ["<%=", "%>"],
+    ["<%==", "%>"],
     ["<%#", "%>"],
     ["{", "}"],
     ["[", "]"],

@Earlopain Earlopain added bug Something isn't working vscode This pull request should be included in the VS Code extension's release notes labels Nov 25, 2024
@andyw8
Copy link
Contributor

andyw8 commented Nov 25, 2024

Interesting. Seems like bad security risk that you could accidentally mark a string as safe by adding an extra =.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working vscode This pull request should be included in the VS Code extension's release notes
Projects
None yet
Development

No branches or pull requests

2 participants