atom / language-ruby

Ruby package for Atom
Other
101 stars 144 forks source link

Unstable/Incorrect syntax highlighting with tree sitter when editing blocks passed to methods called with unparenthesized string parameters #256

Open Ajedi32 opened 5 years ago

Ajedi32 commented 5 years ago

When using syntax highlighting with Tree Sitter enabled, I am experiencing incorrect and unstable syntax highlighting when adding text to certain Rspec files.

It's hard for me to nail down the exact cause of the issue because even slight, seemingly irrelevant changes can cause it to disappear, but it seems to be related to having quotes inside of blocks passed to methods called with unparenthesized string parameters.

Steps to Reproduce

  1. Create a file, test.rb with the following contents:
Rspec.describe "text" do
  # Comment
  # "a /b/
end
  1. Run Atom: atom --clear-window-state --safe .
  2. Open test.rb in Atom
  3. Move the text cursor to the end of line 2, after "# Comment"
  4. Start typing additional characters

Expected behavior: Syntax highlighting should not change

Actual behavior: Syntax highlighting alters between the correct behavior, and treating the entire file after the first line as a string with each additional character you type.

Edit by @rsese to add GIF

ruby-tree-sitter

Reproduces how often: Always.

Versions

OS: Windows 10 Atom: 1.32.2 Electron: 2.0.9 Chrome: 61.0.3163.100 Node: 8.9.3 x64 apm: 2.1.2 npm: 6.2.0 git: 2.9.0.windows.1 visual studio language-ruby: 0.72.14

Additional Information

allisonphillips commented 5 years ago

I have been experiencing the same behavior with Ruby and JavaScript with the new tree parser and it was resolved by disabling the new parser. I was told to wait until the newest update, but I'm still experiencing the same issues with 1.32.2. After the update happened, I re-enabled it and am still experiencing the issue, albeit less frequently. The block will typically self-correct if you modify something small in the mishighlighted syntax. It seems to happen most frequently when working with strings and comments, and it is maddening.

incorrect syntax highlighting
rsese commented 5 years ago

Thanks for the report - I can reproduce on macOS 10.12.6 with 1.35.0-nightly1:

ruby-tree-sitter

thbar commented 5 years ago

I'm seeing something similar, but have been able to pinpoint it outside of a block declaration, so I thought I'd provide extra data. Just create a ruby file with:

"file-2018-12-09.csv"
/Processing input file ([^$]*)file-2018-12-10.csv$/

then open and go at the bottom of the file, type multiple spaces.

One space will give incorrect highlighting, then another will give correct highlighting, then another will remain correct, then it will cycle (sorry I cannot generate a GIF right now).

niborg commented 5 years ago

Is there a fix in the works for this? Or a cause identified so others might make the fix? Although seemingly minor, it is disruptive.

Ajedi32 commented 5 years ago

@niborg If it bothers you, a good temporary work-around is to just disable tree sitter in settings.

maxbrunsfeld commented 4 years ago

I can't reproduce either of these problems on the latest nightly. Is anyone still seeing this? It may have been fixed by some upgrade of either tree-sitter or tree-sitter-ruby.