tide icon indicating copy to clipboard operation
tide copied to clipboard

Extra newlines in incorrect format (CRLF) cause wrong LSP highlight locations

Open space-nuko opened this issue 2 years ago • 2 comments

When submitting issues to this project, please include the following information.

Checklist

  • [x] I have searched both open and closed issues and cannot find a duplicate.
  • [x] I can reproduce the problem with the latest version of the relevant packages.
  • [x] The problem still occurs after I issued M-x tide-restart-server in the buffer where I had the problem.
  • [x] I verified that the version and the configuration file path reported by M-x tide-verify-setup are correct.
  • [x] If tide is reporting an error or warning I think should not be reported, I can run tsc (and tslint, if applicable) without the error or warning I'm seeing in tide.
  • [x] If tide is not reporting an error or warning I think should be reported, tsc (or tslint, if applicable) reports the error or warning I was expecting to see.
  • [x] I am positive the problem does not belong to typescript-mode or tsserver.

Relevant Version Numbers

  • Tide: 4.5.4
  • TypeScript:5.0.3
  • Emacs: 29.0.50

(The list above is minimal. Make sure to include any other version numbers relevant to your report.)

Steps to Reproduce the Bug

I noticed that if my document formatted with LF contains an extra CRLF somewhere (^M) then the highlights become offset and wrong. 2023-04-06 00_51_14-LGraphCanvas ts – Doom Emacs 2023-04-06 00_51_01-LGraphCanvas ts – Doom Emacs

Expected Behavior

Highlights should work

Actual Behavior

The highlights are incorrect

space-nuko avatar Apr 06 '23 04:04 space-nuko

I did a cursory look at the issue. The problem is because of the difference between how emacs and tsserver handle line endings. As you can see in the screenshot, the buffer is not using newline for each ^M, but tsserver seems to treat each as a newline. So most of the tide features won't work properly.

Is this a problem in practice? do you need to have multiple ^M in a single line? Anyhow, I am not sure how to fix the issue in a straightforward way.

ananthakumaran avatar Apr 16 '23 10:04 ananthakumaran

This is very much a problem for me still, if there's an extra ^M anywhere in the file then random features like imenu will stop working with tide-build-imenu-index: End of buffer, and any formatting commands will mangle the entire part of the file past the ^M causing me to lose work

space-nuko avatar May 09 '23 13:05 space-nuko