Extra newlines in incorrect format (CRLF) cause wrong LSP highlight locations
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-serverin the buffer where I had the problem. - [x] I verified that the version and the configuration file path reported by
M-x tide-verify-setupare correct. - [x] If tide is reporting an error or warning I think should not be reported, I can run
tsc(andtslint, 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(ortslint, if applicable) reports the error or warning I was expecting to see. - [x] I am positive the problem does not belong to
typescript-modeortsserver.
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.

Expected Behavior
Highlights should work
Actual Behavior
The highlights are incorrect
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.
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